/** * Create a generator to walk over the submodule entries currently in the * index * * The {@code .gitmodules} file is read from the index. * * @param repository * a {@link org.eclipse.jgit.lib.Repository} object. * @return generator over submodule index entries. The caller is responsible * for calling {@link #close()}. * @throws java.io.IOException */ public static SubmoduleWalk forIndex(Repository repository) throws IOException { @SuppressWarnings("resource") // The caller closes it SubmoduleWalk generator = new SubmoduleWalk(repository); try { DirCache index = repository.readDirCache(); generator.setTree(new DirCacheIterator(index)); } catch (IOException e) { generator.close(); throw e; } return generator; }
walk.setFilter(PathFilterGroup.createFromStrings(paths)); DirCacheIterator iIter = new DirCacheIterator(this); FileTreeIterator fIter = new FileTreeIterator(repository); walk.addTree(iIter); if (fIter == null) continue; DirCacheEntry entry = iIter.getDirCacheEntry(); if (entry.isSmudged() && iIter.idEqual(fIter)) { entry.setLength(fIter.getEntryLength()); entry.setLastModified(fIter.getEntryLastModified());
/** {@inheritDoc} */ @Override public void reset() { if (!first()) { ptr = treeStart; nextSubtreePos = 0; currentEntry = null; currentSubtree = null; if (!eof()) parseEntry(); } }
/** {@inheritDoc} */ @Override public AbstractTreeIterator createSubtreeIterator(ObjectReader reader) throws IncorrectObjectTypeException, IOException { if (currentSubtree == null) throw new IncorrectObjectTypeException(getEntryObjectId(), Constants.TYPE_TREE); return new DirCacheIterator(this, currentSubtree); }
/** {@inheritDoc} */ @Override public void next(int delta) { while (--delta >= 0) { if (currentSubtree != null) ptr += currentSubtree.getEntrySpan(); else ptr++; if (eof()) break; parseEntry(); } }
throws CorruptObjectException, IOException { try (NameConflictTreeWalk tw = new NameConflictTreeWalk(repo)) { int dciPos = tw.addTree(new DirCacheIterator(dc)); FileTreeIterator fti = new FileTreeIterator(repo); tw.addTree(fti); if (dcIt == null || wtIt == null) return true; if (wtIt.isModified(dcIt.getDirCacheEntry(), true, this.walk.getObjectReader())) { return true;
else treeWalk.addTree(new EmptyTreeIterator()); treeWalk.addTree(new DirCacheIterator(dirCache)); treeWalk.addTree(initialWorkingTreeIterator); initialWorkingTreeIterator.setDirCacheIterator(treeWalk, 1); .getDirCacheEntry(); if (dirCacheEntry != null) { int stage = dirCacheEntry.getStage(); || treeIterator .getEntryRawMode() != dirCacheIterator .getEntryRawMode()) { } else { if (workingTreeIterator.isModified( dirCacheIterator.getDirCacheEntry(), true, treeWalk.getObjectReader())) {
DirCacheIterator.class); if (i != null) { DirCacheEntry ent = i.getDirCacheEntry(); if (ent != null && compareMetadata(ent) == MetadataDiff.EQUAL && ((ent.getFileMode().getBits() & FileMode.TYPE_MASK) != FileMode.TYPE_GITLINK)) { contentIdOffset = i.idOffset(); contentIdFromPtr = ptr; return contentId = i.idBuffer();
/** {@inheritDoc} */ @Override public boolean include(TreeWalk walker) { DirCacheIterator i = walker.getTree(treeIdx, DirCacheIterator.class); if (i == null) return true; DirCacheEntry e = i.getDirCacheEntry(); return e == null || !e.isSkipWorkTree(); }
return wtMode; final FileMode iMode = indexIter.getEntryFileMode(); if (getOptions().isFileMode() && iMode != FileMode.GITLINK && iMode != FileMode.TREE) { return wtMode;
.getEntryAttributesNode(treeWalk.getObjectReader()); .getEntryAttributesNode(treeWalk.getObjectReader());
treeWalk.addTree(new DirCacheIterator(cache)); treeWalk.addTree(new FileTreeIterator(repo)); treeWalk.getTree(2, FileTreeIterator.class) WorkingTreeIterator.class); if (indexIter != null && !indexIter.getDirCacheEntry().isMerged()) throw new UnmergedPathsException( new UnmergedPathException( indexIter.getDirCacheEntry())); if (wtIter != null) { if (indexIter == null && headIter == null
else treeWalk.addTree(new EmptyTreeIterator()); treeWalk.addTree(new DirCacheIterator(dirCache)); treeWalk.addTree(initialWorkingTreeIterator); initialWorkingTreeIterator.setDirCacheIterator(treeWalk, 1); .getDirCacheEntry(); if (dirCacheEntry != null) { int stage = dirCacheEntry.getStage(); || treeIterator .getEntryRawMode() != dirCacheIterator .getEntryRawMode()) { } else { if (workingTreeIterator.isModified( dirCacheIterator.getDirCacheEntry(), true, treeWalk.getObjectReader())) {
@Override public AbstractTreeIterator createSubtreeIterator(final ObjectReader reader) throws IncorrectObjectTypeException, IOException { if (currentSubtree == null) throw new IncorrectObjectTypeException(getEntryObjectId(), Constants.TYPE_TREE); return new DirCacheIterator(this, currentSubtree); }
DirCacheIterator.class); if (i != null) { DirCacheEntry ent = i.getDirCacheEntry(); if (ent != null && compareMetadata(ent) == MetadataDiff.EQUAL && ((ent.getFileMode().getBits() & FileMode.TYPE_MASK) != FileMode.TYPE_GITLINK)) { contentIdOffset = i.idOffset(); contentIdFromPtr = ptr; return contentId = i.idBuffer();
/** {@inheritDoc} */ @Override public boolean include(TreeWalk walker) { final int n = walker.getTreeCount(); if (n == 1) // Assume they meant difference to empty tree. return true; final int m = walker.getRawMode(baseTree); for (int i = 1; i < n; i++) { DirCacheIterator baseDirCache = walker.getTree(baseTree, DirCacheIterator.class); DirCacheIterator newDirCache = walker.getTree(i, DirCacheIterator.class); if (baseDirCache != null && newDirCache != null) { DirCacheEntry baseDci = baseDirCache.getDirCacheEntry(); DirCacheEntry newDci = newDirCache.getDirCacheEntry(); if (baseDci != null && newDci != null) { if (baseDci.isAssumeValid() != newDci.isAssumeValid()) return true; if (baseDci.isAssumeValid()) // && newDci.isAssumeValid() return false; } } if (walker.getRawMode(i) != m || !walker.idEqual(i, baseTree)) return true; } return false; }
/** * Create a new iterator for an already loaded DirCache instance. * <p> * 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. * * @param dc * the cache to walk. It must be already loaded into memory. */ public DirCacheIterator(DirCache dc) { cache = dc; tree = dc.getCacheTree(true); treeStart = 0; treeEnd = tree.getEntrySpan(); subtreeId = new byte[Constants.OBJECT_ID_LENGTH]; if (!eof()) parseEntry(); }
return wtMode; final FileMode iMode = indexIter.getEntryFileMode(); if (getOptions().isFileMode() && iMode != FileMode.GITLINK && iMode != FileMode.TREE) { return wtMode;
.getEntryAttributesNode(treeWalk.getObjectReader()); .getEntryAttributesNode(treeWalk.getObjectReader());
treeWalk.addTree(new DirCacheIterator(repo.readDirCache())); ObjectId headID = repo.resolve(Constants.HEAD); if (headID != null) {