public class FollowFilter extends TreeFilter
This is a special filter that performs AND(path, ANY_DIFF)
, but also
triggers rename detection so that the path node is updated to include a prior
file name as the RevWalk traverses history.
The renames found will be reported to a RenameCallback
if one is set.
Results with this filter are unpredictable if the path being followed is a subdirectory.
ALL, ANY_DIFF
Modifier and Type | Method and Description |
---|---|
TreeFilter |
clone()
Clone this tree filter, including its parameters.
|
static FollowFilter |
create(String path,
DiffConfig cfg)
Create a new tree filter for a user supplied path.
|
String |
getPath() |
RenameCallback |
getRenameCallback() |
boolean |
include(TreeWalk walker)
Determine if the current entry is interesting to report.
|
void |
setRenameCallback(RenameCallback callback)
Sets the callback to which renames shall be reported.
|
boolean |
shouldBeRecursive()
Does this tree filter require a recursive walk to match everything?
|
String |
toString() |
negate
public static FollowFilter create(String path, DiffConfig cfg)
Path strings are relative to the root of the repository. If the user's input should be assumed relative to a subdirectory of the repository the caller must prepend the subdirectory's path prior to creating the filter.
Path strings use '/' to delimit directories on all platforms.
path
- the path to filter on. Must not be the empty string. All
trailing '/' characters will be trimmed before string's length
is checked or is used as part of the constructed filter.cfg
- diff config specifying rename detection options.IllegalArgumentException
- the path supplied was the empty string.public String getPath()
public boolean include(TreeWalk walker) throws MissingObjectException, IncorrectObjectTypeException, IOException
TreeFilter
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.
include
in class TreeFilter
walker
- the walker the filter needs to examine.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()
TreeFilter
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.
shouldBeRecursive
in class TreeFilter
public TreeFilter clone()
TreeFilter
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.
clone
in class TreeFilter
public String toString()
toString
in class TreeFilter
public RenameCallback getRenameCallback()
null
if nonepublic void setRenameCallback(RenameCallback callback)
callback
- the callback to useCopyright © 2015 Eclipse JGit Project. All rights reserved.