Class IndexDiff


  • public class IndexDiff
    extends java.lang.Object
    Compares the index, a tree, and the working directory Ignored files are not taken into account. The following information is retrieved:
    • added files
    • changed files
    • removed files
    • missing files
    • modified files
    • conflicting files
    • untracked files
    • files with assume-unchanged flag
    • Constructor Detail

      • IndexDiff

        public IndexDiff​(Repository repository,
                         java.lang.String revstr,
                         WorkingTreeIterator workingTreeIterator)
                  throws java.io.IOException
        Construct an IndexDiff
        Parameters:
        repository -
        revstr - symbolic name e.g. HEAD An EmptyTreeIterator is used if revstr cannot be resolved.
        workingTreeIterator - iterator for working directory
        Throws:
        java.io.IOException
      • IndexDiff

        public IndexDiff​(Repository repository,
                         ObjectId objectId,
                         WorkingTreeIterator workingTreeIterator)
                  throws java.io.IOException
        Construct an Indexdiff
        Parameters:
        repository -
        objectId - tree id. If null, an EmptyTreeIterator is used.
        workingTreeIterator - iterator for working directory
        Throws:
        java.io.IOException
    • Method Detail

      • setIgnoreSubmoduleMode

        public void setIgnoreSubmoduleMode​(SubmoduleWalk.IgnoreSubmoduleMode mode)
        Parameters:
        mode - defines how modifications in submodules are treated
        Since:
        3.6
      • setWorkingTreeItFactory

        public void setWorkingTreeItFactory​(IndexDiff.WorkingTreeIteratorFactory wTreeIt)
        Allows higher layers to set the factory for WorkingTreeIterators.
        Parameters:
        wTreeIt -
        Since:
        3.6
      • setFilter

        public void setFilter​(TreeFilter filter)
        Sets a filter. Can be used e.g. for restricting the tree walk to a set of files.
        Parameters:
        filter -
      • diff

        public boolean diff()
                     throws java.io.IOException
        Run the diff operation. Until this is called, all lists will be empty. Use diff(ProgressMonitor, int, int, String) if a progress monitor is required.
        Returns:
        if anything is different between index, tree, and workdir
        Throws:
        java.io.IOException
      • diff

        public boolean diff​(ProgressMonitor monitor,
                            int estWorkTreeSize,
                            int estIndexSize,
                            java.lang.String title)
                     throws java.io.IOException
        Run the diff operation. Until this is called, all lists will be empty.

        The operation may be aborted by the progress monitor. In that event it will report what was found before the cancel operation was detected. Callers should ignore the result if monitor.isCancelled() is true. If a progress monitor is not needed, callers should use diff() instead. Progress reporting is crude and approximate and only intended for informing the user.

        Parameters:
        monitor - for reporting progress, may be null
        estWorkTreeSize - number or estimated files in the working tree
        estIndexSize - number of estimated entries in the cache
        title -
        Returns:
        if anything is different between index, tree, and workdir
        Throws:
        java.io.IOException
      • getAdded

        public java.util.Set<java.lang.String> getAdded()
        Returns:
        list of files added to the index, not in the tree
      • getChanged

        public java.util.Set<java.lang.String> getChanged()
        Returns:
        list of files changed from tree to index
      • getRemoved

        public java.util.Set<java.lang.String> getRemoved()
        Returns:
        list of files removed from index, but in tree
      • getMissing

        public java.util.Set<java.lang.String> getMissing()
        Returns:
        list of files in index, but not filesystem
      • getModified

        public java.util.Set<java.lang.String> getModified()
        Returns:
        list of files modified on disk relative to the index
      • getUntracked

        public java.util.Set<java.lang.String> getUntracked()
        Returns:
        list of files that are not ignored, and not in the index.
      • getConflicting

        public java.util.Set<java.lang.String> getConflicting()
        Returns:
        list of files that are in conflict, corresponds to the keys of getConflictingStageStates()
      • getIgnoredNotInIndex

        public java.util.Set<java.lang.String> getIgnoredNotInIndex()
        The method returns the list of ignored files and folders. Only the root folder of an ignored folder hierarchy is reported. If a/b/c is listed in the .gitignore then you should not expect a/b/c/d/e/f to be reported here. Only a/b/c will be reported. Furthermore only ignored files / folders are returned that are NOT in the index.
        Returns:
        list of files / folders that are ignored
      • getAssumeUnchanged

        public java.util.Set<java.lang.String> getAssumeUnchanged()
        Returns:
        list of files with the flag assume-unchanged
      • getUntrackedFolders

        public java.util.Set<java.lang.String> getUntrackedFolders()
        Returns:
        list of folders containing only untracked files/folders
      • getIndexMode

        public FileMode getIndexMode​(java.lang.String path)
        Get the file mode of the given path in the index
        Parameters:
        path -
        Returns:
        file mode
      • getPathsWithIndexMode

        public java.util.Set<java.lang.String> getPathsWithIndexMode​(FileMode mode)
        Get the list of paths that IndexDiff has detected to differ and have the given file mode
        Parameters:
        mode -
        Returns:
        the list of paths that IndexDiff has detected to differ and have the given file mode
        Since:
        3.6