Class DiffEntry

  • Direct Known Subclasses:
    FileHeader

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

      • DEV_NULL

        public static final java.lang.String DEV_NULL
        Magical file name used for file adds or deletes.
        See Also:
        Constant Field Values
      • oldPath

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

        protected java.lang.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 java.util.List<DiffEntry> scan​(TreeWalk walk)
                                              throws java.io.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:
        java.io.IOException - the repository cannot be accessed.
        java.lang.IllegalArgumentException - When given TreeWalk doesn't have exactly two trees.
      • scan

        public static java.util.List<DiffEntry> scan​(TreeWalk walk,
                                                     boolean includeTrees)
                                              throws java.io.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:
        java.io.IOException - the repository cannot be accessed.
        java.lang.IllegalArgumentException - when includeTrees is true and given TreeWalk is recursive. Or when given TreeWalk doesn't have exactly two trees
      • scan

        public static java.util.List<DiffEntry> scan​(TreeWalk walk,
                                                     boolean includeTrees,
                                                     TreeFilter[] markTreeFilters)
                                              throws java.io.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:
        java.io.IOException - the repository cannot be accessed.
        java.lang.IllegalArgumentException - when includeTrees is true and given TreeWalk is recursive. Or when given TreeWalk doesn't have exactly two trees
        Since:
        2.3
      • modify

        static DiffEntry modify​(java.lang.String path)
      • breakModify

        static java.util.List<DiffEntry> breakModify​(DiffEntry entry)
        Breaks apart a DiffEntry into two entries, one DELETE and one ADD.
        Parameters:
        entry - the DiffEntry to break apart.
        Returns:
        a list containing two entries. Calling getChangeType() on the first entry will return ChangeType.DELETE. Calling it on the second entry will return ChangeType.ADD.
      • getOldPath

        public java.lang.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 java.lang.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 java.lang.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
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object