Package org.eclipse.jgit.lib
Class IndexDiff
- java.lang.Object
-
- org.eclipse.jgit.lib.IndexDiff
-
public class IndexDiff extends 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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
IndexDiff.StageState
Represents the state of the index for a certain path regarding the stages - which stages exist for a path and which not (base, ours, theirs).static interface
IndexDiff.WorkingTreeIteratorFactory
A factory to producing WorkingTreeIterators
-
Constructor Summary
Constructors Constructor Description IndexDiff(Repository repository, String revstr, WorkingTreeIterator workingTreeIterator)
Construct an IndexDiffIndexDiff(Repository repository, ObjectId objectId, WorkingTreeIterator workingTreeIterator)
Construct an Indexdiff
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
diff()
Run the diff operation.boolean
diff(ProgressMonitor monitor, int estWorkTreeSize, int estIndexSize, String title)
Run the diff operation.Set<String>
getAdded()
Set<String>
getAssumeUnchanged()
Set<String>
getChanged()
Set<String>
getConflicting()
Map<String,IndexDiff.StageState>
getConflictingStageStates()
Set<String>
getIgnoredNotInIndex()
The method returns the list of ignored files and folders.FileMode
getIndexMode(String path)
Get the file mode of the given path in the indexSet<String>
getMissing()
Set<String>
getModified()
Set<String>
getPathsWithIndexMode(FileMode mode)
Get the list of paths that IndexDiff has detected to differ and have the given file modeSet<String>
getRemoved()
Set<String>
getUntracked()
Set<String>
getUntrackedFolders()
void
setFilter(TreeFilter filter)
Sets a filter.void
setIgnoreSubmoduleMode(SubmoduleWalk.IgnoreSubmoduleMode mode)
void
setWorkingTreeItFactory(IndexDiff.WorkingTreeIteratorFactory wTreeIt)
Allows higher layers to set the factory for WorkingTreeIterators.
-
-
-
Constructor Detail
-
IndexDiff
public IndexDiff(Repository repository, String revstr, WorkingTreeIterator workingTreeIterator) throws IOException
Construct an IndexDiff- Parameters:
repository
-revstr
- symbolic name e.g. HEAD An EmptyTreeIterator is used ifrevstr
cannot be resolved.workingTreeIterator
- iterator for working directory- Throws:
IOException
-
IndexDiff
public IndexDiff(Repository repository, ObjectId objectId, WorkingTreeIterator workingTreeIterator) throws IOException
Construct an Indexdiff- Parameters:
repository
-objectId
- tree id. If null, an EmptyTreeIterator is used.workingTreeIterator
- iterator for working directory- Throws:
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 IOException
Run the diff operation. Until this is called, all lists will be empty. Usediff(ProgressMonitor, int, int, String)
if a progress monitor is required.- Returns:
- if anything is different between index, tree, and workdir
- Throws:
IOException
-
diff
public boolean diff(ProgressMonitor monitor, int estWorkTreeSize, int estIndexSize, String title) throws 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 nullestWorkTreeSize
- number or estimated files in the working treeestIndexSize
- number of estimated entries in the cachetitle
-- Returns:
- if anything is different between index, tree, and workdir
- Throws:
IOException
-
getModified
public Set<String> getModified()
- Returns:
- list of files modified on disk relative to the index
-
getUntracked
public Set<String> getUntracked()
- Returns:
- list of files that are not ignored, and not in the index.
-
getConflicting
public Set<String> getConflicting()
- Returns:
- list of files that are in conflict, corresponds to the keys of
getConflictingStageStates()
-
getConflictingStageStates
public Map<String,IndexDiff.StageState> getConflictingStageStates()
- Returns:
- the map from each path of
getConflicting()
to its correspondingIndexDiff.StageState
- Since:
- 3.0
-
getIgnoredNotInIndex
public Set<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 Set<String> getAssumeUnchanged()
- Returns:
- list of files with the flag assume-unchanged
-
getUntrackedFolders
public Set<String> getUntrackedFolders()
- Returns:
- list of folders containing only untracked files/folders
-
getIndexMode
public FileMode getIndexMode(String path)
Get the file mode of the given path in the index- Parameters:
path
-- Returns:
- file mode
-
-