Class DiffEntry

  • Direct Known Subclasses:
    FileHeader

    public class DiffEntry
    extends Object
    A value class representing a change to a file
    • Field Detail

      • oldPath

        protected String oldPath
        File name of the old (pre-image).
      • newPath

        protected String newPath
        File name of the new (post-image).
      • diffAttribute

        protected Attribute diffAttribute
        diff filter attribute
        Since:
        4.11
      • oldMode

        protected FileMode oldMode
        Old mode of the file, if described by the patch, else null.
      • newMode

        protected FileMode newMode
        New mode of the file, if described by the patch, else null.
      • changeType

        protected DiffEntry.ChangeType changeType
        General type of change indicated by the patch.
      • score

        protected int score
        Similarity score if changeType is a copy or rename.
      • oldId

        protected AbbreviatedObjectId oldId
        ObjectId listed on the index line for the old (pre-image)
      • newId

        protected AbbreviatedObjectId newId
        ObjectId listed on the index line for the new (post-image)
    • Constructor Detail

      • DiffEntry

        protected DiffEntry()
        Create an empty DiffEntry
    • Method Detail

      • scan

        public static List<DiffEntry> scan​(TreeWalk walk)
                                    throws IOException
        Convert the TreeWalk into DiffEntry headers.
        Parameters:
        walk - the TreeWalk to walk through. Must have exactly two trees.
        Returns:
        headers describing the changed files.
        Throws:
        IOException - the repository cannot be accessed.
        IllegalArgumentException - When given TreeWalk doesn't have exactly two trees.
      • scan

        public static List<DiffEntry> scan​(TreeWalk walk,
                                           boolean includeTrees)
                                    throws IOException
        Convert the TreeWalk into DiffEntry headers, depending on includeTrees it will add tree objects into result or not.
        Parameters:
        walk - the TreeWalk to walk through. Must have exactly two trees and when includeTrees parameter is true it can't be recursive.
        includeTrees - include tree objects.
        Returns:
        headers describing the changed files.
        Throws:
        IOException - the repository cannot be accessed.
        IllegalArgumentException - when includeTrees is true and given TreeWalk is recursive. Or when given TreeWalk doesn't have exactly two trees
      • scan

        public static List<DiffEntry> scan​(TreeWalk walk,
                                           boolean includeTrees,
                                           TreeFilter[] markTreeFilters)
                                    throws IOException
        Convert the TreeWalk into DiffEntry headers, depending on includeTrees it will add tree objects into result or not.
        Parameters:
        walk - the TreeWalk to walk through. Must have exactly two trees and when includeTrees parameter is true it can't be recursive.
        includeTrees - include tree objects.
        markTreeFilters - array of tree filters which will be tested for each entry. If an entry matches, the entry will later return true when queried through {isMarked(int) (with the index from this passed array).
        Returns:
        headers describing the changed files.
        Throws:
        IOException - the repository cannot be accessed.
        IllegalArgumentException - when includeTrees is true and given TreeWalk is recursive. Or when given TreeWalk doesn't have exactly two trees
        Since:
        2.3
      • getOldPath

        public String getOldPath()
        Get the old name associated with this file.

        The meaning of the old name can differ depending on the semantic meaning of this patch:

        • file add: always /dev/null
        • file modify: always getNewPath()
        • file delete: always the file being deleted
        • file copy: source file the copy originates from
        • file rename: source file the rename originates from
        Returns:
        old name for this file.
      • getNewPath

        public String getNewPath()
        Get the new name associated with this file.

        The meaning of the new name can differ depending on the semantic meaning of this patch:

        • file add: always the file being created
        • file modify: always getOldPath()
        • file delete: always /dev/null
        • file copy: destination file the copy ends up at
        • file rename: destination file the rename ends up at
        Returns:
        new name for this file.
      • getPath

        public String getPath​(DiffEntry.Side side)
        Get the path associated with this file.
        Parameters:
        side - which path to obtain.
        Returns:
        name for this file.
      • getDiffAttribute

        public Attribute getDiffAttribute()
        Returns:
        the Attribute determining filters to be applied.
        Since:
        4.11
      • getOldMode

        public FileMode getOldMode()
        Get the old file mode
        Returns:
        the old file mode, if described in the patch
      • getNewMode

        public FileMode getNewMode()
        Get the new file mode
        Returns:
        the new file mode, if described in the patch
      • getMode

        public FileMode getMode​(DiffEntry.Side side)
        Get the mode associated with this file.
        Parameters:
        side - which mode to obtain.
        Returns:
        the mode.
      • getOldId

        public AbbreviatedObjectId getOldId()
        Get the old object id from the index.
        Returns:
        the object id; null if there is no index line
      • getNewId

        public AbbreviatedObjectId getNewId()
        Get the new object id from the index.
        Returns:
        the object id; null if there is no index line
      • isMarked

        public boolean isMarked​(int index)
        Whether the mark tree filter with the specified index matched during scan or not, see scan(TreeWalk, boolean, TreeFilter...). Example:

         TreeFilter filterA = ...;
         TreeFilter filterB = ...;
         List<DiffEntry> entries = DiffEntry.scan(walk, false, filterA, filterB);
         DiffEntry entry = entries.get(0);
         boolean filterAMatched = entry.isMarked(0);
         boolean filterBMatched = entry.isMarked(1);
         

        Note that 0 corresponds to filterA because it was the first filter that was passed to scan.

        To query more than one flag at once, see getTreeFilterMarks().

        Parameters:
        index - the index of the tree filter to check for (must be between 0 and Integer.SIZE).
        Returns:
        a boolean.
        Since:
        2.3
      • getId

        public AbbreviatedObjectId getId​(DiffEntry.Side side)
        Get the object id.
        Parameters:
        side - the side of the id to get.
        Returns:
        the object id; null if there is no index line