Class DirCacheBuildIterator
DirCache
as part of a
TreeWalk
.
Like DirCacheIterator
this iterator allows
a DirCache to be used in parallel with other sorts of iterators in a
TreeWalk. However any entry which appears in the source DirCache and which is
skipped by the TreeFilter is automatically copied into
DirCacheBuilder
, thus retaining it in the
newly updated index.
This iterator is suitable for update processes, or even a simple delete algorithm. For example deleting a path:
final DirCache dirc = db.lockDirCache(); final DirCacheBuilder edit = dirc.builder(); final TreeWalk walk = new TreeWalk(db); walk.reset(); walk.setRecursive(true); walk.setFilter(PathFilter.create("name/to/remove")); walk.addTree(new DirCacheBuildIterator(edit)); while (walk.next()) ; // do nothing on a match as we want to remove matches edit.commit();
-
Field Summary
FieldsFields inherited from class org.eclipse.jgit.dircache.DirCacheIterator
cache, currentEntry, currentSubtree, ptr
Fields inherited from class org.eclipse.jgit.treewalk.AbstractTreeIterator
attributesNode, DEFAULT_PATH_SIZE, mode, parent, path, pathLen, pathOffset, zeroid
-
Constructor Summary
ConstructorsConstructorDescriptionCreate a new iterator for an already loaded DirCache instance. -
Method Summary
Modifier and TypeMethodDescriptioncreateSubtreeIterator
(ObjectReader reader) Create a new iterator for the current entry's subtree.protected boolean
Whether the iterator implementsAbstractTreeIterator.stopWalk()
.void
skip()
Advance to the next tree entry, populating this iterator with its data.void
stopWalk()
Indicates to the iterator that no more entries will be read.Methods inherited from class org.eclipse.jgit.dircache.DirCacheIterator
back, createEmptyTreeIterator, eof, first, getDirCacheEntry, getEntryAttributesNode, hasId, idBuffer, idOffset, next, reset
Methods inherited from class org.eclipse.jgit.treewalk.AbstractTreeIterator
createSubtreeIterator, ensurePathCapacity, findFile, findFile, getEntryFileMode, getEntryObjectId, getEntryObjectId, getEntryPathBuffer, getEntryPathHashCode, getEntryPathLength, getEntryPathString, getEntryRawMode, getName, getNameLength, getNameOffset, growPath, idEqual, isWorkTree, pathCompare, pathCompare, toString
-
Field Details
-
builder
-
-
Constructor Details
-
DirCacheBuildIterator
Create a new iterator for an already loaded DirCache instance.The iterator implementation may copy part of the cache's data during construction, so the cache must be read in prior to creating the iterator.
- Parameters:
dcb
- the cache builder for the cache to walk. The cache must be already loaded into memory.
-
DirCacheBuildIterator
DirCacheBuildIterator(DirCacheBuildIterator p, DirCacheTree dct)
-
-
Method Details
-
createSubtreeIterator
public AbstractTreeIterator createSubtreeIterator(ObjectReader reader) throws IncorrectObjectTypeException, IOException Create a new iterator for the current entry's subtree.The parent reference of the iterator must be
this
, otherwise the caller would not be able to exit out of the subtree iterator correctly and return to continue walkingthis
.- Overrides:
createSubtreeIterator
in classDirCacheIterator
- Parameters:
reader
- reader to load the tree data from.- Returns:
- a new parser that walks over the current subtree.
- Throws:
IncorrectObjectTypeException
- the current entry is not actually a tree and cannot be parsed as though it were a tree.IOException
- a loose object or pack file could not be read.
-
skip
Advance to the next tree entry, populating this iterator with its data.This method behaves like
seek(1)
but is called byTreeWalk
only if aTreeFilter
was used and ruled out the current entry from the results. In such cases this tree iterator may perform special behavior.- Overrides:
skip
in classAbstractTreeIterator
- Throws:
CorruptObjectException
- the tree is invalid.
-
stopWalk
public void stopWalk()Indicates to the iterator that no more entries will be read.This is only invoked by TreeWalk when the iteration is aborted early due to a
StopWalkException
being thrown from within a TreeFilter.- Overrides:
stopWalk
in classAbstractTreeIterator
-
needsStopWalk
protected boolean needsStopWalk()Whether the iterator implementsAbstractTreeIterator.stopWalk()
.- Overrides:
needsStopWalk
in classAbstractTreeIterator
- Returns:
true
if the iterator implementsAbstractTreeIterator.stopWalk()
.
-