public class IndexDiffFilter extends TreeFilterA performance optimized variant of
TreeFilter.ANY_DIFFwhich should be used when among the walked trees there is a
WorkingTreeIterator. Please see the documentation of
TreeFilter.ANY_DIFFfor a basic description of the semantics.
This filter tries to avoid computing content ids of the files in the working-tree. In contrast to
TreeFilter.ANY_DIFFthis filter takes care to first compare the entry from the
DirCacheIteratorwith the entries from all other iterators besides the
WorkingTreeIterator. Since all those entries have fast access to content ids that is very fast. If a difference is detected in this step this filter decides to include that path before even looking at the working-tree entry.
If no difference is found then we have to compare index and working-tree as the last step. By making use of
WorkingTreeIterator.isModified(org.eclipse.jgit.dircache.DirCacheEntry, boolean, ObjectReader)we can avoid the computation of the content id if the file is not dirty.
Instances of this filter should not be used for multiple
TreeWalks. Always construct a new instance of this filter for each TreeWalk.
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
clone()Clone this tree filter, including its parameters.
getIgnoredPaths()The method returns the list of ignored files and folders.
getUntrackedFolders()Getter for the field
include(TreeWalk tw)Determine if the current entry is interesting to report.
shouldBeRecursive()Does this tree filter require a recursive walk to match everything?
public IndexDiffFilter(int dirCacheIndex, int workingTreeIndex)Creates a new instance of this filter. Do not use an instance of this filter in multiple treewalks.
public IndexDiffFilter(int dirCacheIndex, int workingTreeIndex, boolean honorIgnores)Creates a new instance of this filter. Do not use an instance of this filter in multiple treewalks.
dirCacheIndex- the index of the
DirCacheIteratorin the associated treewalk
workingTreeIndex- the index of the
WorkingTreeIteratorin the associated treewalk
honorIgnores- true if the filter should skip working tree files that are declared as ignored by the standard exclude mechanisms.
public boolean include(TreeWalk tw) throws MissingObjectException, IncorrectObjectTypeException, IOExceptionDetermine if the current entry is interesting to report.
This method is consulted for subtree entries even if
TreeWalk.isRecursive()is enabled. The consultation allows the filter to bypass subtree recursion on a case-by-case basis, even when recursion is enabled at the application level.
- Specified by:
tw- the walker the filter needs to examine.
- true if the current entry should be seen by the application; false to hide the entry.
MissingObjectException- an object the filter needs to consult to determine its answer does not exist in the Git repository the walker is operating on. Filtering this current walker entry is impossible without the object.
IncorrectObjectTypeException- an object the filter needed to consult was not of the expected object type. This usually indicates a corrupt repository, as an object link is referencing the wrong type.
IOException- a loose object or pack file could not be read to obtain data necessary for the filter to make its decision.
public boolean shouldBeRecursive()Does this tree filter require a recursive walk to match everything?
If this tree filter is matching on full entry path names and its pattern is looking for a '/' then the filter would require a recursive TreeWalk to accurately make its decisions. The walker is not required to enable recursive behavior for any particular filter, this is only a hint.
public TreeFilter clone()Clone this tree filter, including its parameters.
This is a deep clone. If this filter embeds objects or other filters it must also clone those, to ensure the instances do not share mutable data.
getIgnoredPathsThe 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.
- ignored paths
Getter for the field
- all paths of folders which contain only untracked files/folders.
If on the associated treewalk postorder traversal was turned on
TreeWalk.setPostOrderTraversal(boolean)) then an empty list will be returned.