break; } else if (walk.isSubtree()) { walk.enterSubtree();
if (!o.has(COMPLETE)) { o.add(COMPLETE); treeWalk.enterSubtree();
return tw; } else if (tw.isSubtree()) { tw.enterSubtree();
TreeWalk treeWalk = new TreeWalk(repository); treeWalk.addTree(tree); treeWalk.setRecursive(false); while (treeWalk.next()) { if (treeWalk.isSubtree()) { System.out.println("dir: " + treeWalk.getPathString()); treeWalk.enterSubtree(); } else { System.out.println("file: " + treeWalk.getPathString()); } }
@Override public Iterator<? extends BlobIdent> getChildren(BlobIdent node) { Repository repository = projectModel.getObject().getRepository(); try (RevWalk revWalk = new RevWalk(repository)) { RevCommit commit = revWalk.parseCommit(projectModel.getObject().getObjectId(revision)); TreeWalk treeWalk = TreeWalk.forPath(repository, node.path, commit.getTree()); treeWalk.enterSubtree(); List<BlobIdent> children = new ArrayList<>(); while (treeWalk.next()) { int fileMode = treeWalk.getRawMode(0); int fileType = fileMode & FileMode.TYPE_MASK; if (fileType == FileMode.TYPE_TREE || pathTypes.contains(fileType)) children.add(new BlobIdent(revision, treeWalk.getPathString(), fileMode)); } Collections.sort(children); return children.iterator(); } catch (IOException e) { throw new RuntimeException(e); } }
public boolean include(final RevWalk commitWalk, final TreeWalk treeWalk, final RevCommit commit) throws IOException { treeWalk.reset(); treeWalk.setFilter(filter); while (treeWalk.next()) if (treeWalk.isSubtree()) treeWalk.enterSubtree(); return true; }
public List<BlobIdent> getChildren(BlobIdent blobIdent, BlobIdentFilter blobIdentFilter, ObjectId commitId) { Repository repository = getRepository(); try (RevWalk revWalk = new RevWalk(repository)) { RevTree revTree = revWalk.parseCommit(commitId).getTree(); TreeWalk treeWalk; if (blobIdent.path != null) { treeWalk = TreeWalk.forPath(repository, blobIdent.path, revTree); treeWalk.enterSubtree(); } else { treeWalk = new TreeWalk(repository); treeWalk.addTree(revTree); } List<BlobIdent> children = new ArrayList<>(); while (treeWalk.next()) { BlobIdent child = new BlobIdent(blobIdent.revision, treeWalk.getPathString(), treeWalk.getRawMode(0)); if (blobIdentFilter.filter(child)) children.add(child); } Collections.sort(children); return children; } catch (IOException e) { throw new RuntimeException(e); } }
public Optional<InputStream> execute() { try (final TreeWalk tw = new TreeWalk(git.getRepository())) { final ObjectId tree = git.getTreeFromRef(treeRef); tw.setFilter(PathFilter.create(path)); tw.reset(tree); while (tw.next()) { if (tw.isSubtree() && !path.equals(tw.getPathString())) { tw.enterSubtree(); continue; } return Optional.of(new ByteArrayInputStream(git.getRepository().open(tw.getObjectId(0), Constants.OBJ_BLOB).getBytes())); } } catch (final Throwable t) { LOG.debug("Unexpected exception, this will trigger a NoSuchFileException.", t); throw new NoSuchFileException("Can't find '" + path + "' in tree '" + treeRef + "'"); } throw new NoSuchFileException("Can't find '" + path + "' in tree '" + treeRef + "'"); } }
private void collectChanges(TreeWalk tw) throws IOException { while(tw.next()) { String path = toAbsolutePath(tw.getPathString()); if(skips(path)) continue; GitFileEntry head = GitFileEntry.newEntry(tw, HEAD); GitFileEntry target = GitFileEntry.newEntry(tw, TARGET); GitFileEntry worktree = GitFileEntry.newEntry(tw, WORKTREE); if(mergeEntries(path, head, target, worktree)) tw.enterSubtree(); } }
private void collectChanges(TreeWalk tw) throws IOException { while(tw.next()) { String path = toAbsolutePath(tw.getPathString()); if(skips(path)) continue; GitFileEntry head = GitFileEntry.newEntry(tw, HEAD); GitFileEntry target = GitFileEntry.newEntry(tw, TARGET); GitFileEntry worktree = GitFileEntry.newEntry(tw, WORKTREE); if(mergeEntries(path, head, target, worktree)) tw.enterSubtree(); } }
@Override public boolean include(final RevWalk walker, final RevCommit commit) throws IOException { final TreeWalk walk = new TreeWalk(walker.getObjectReader()); walk.addTree(commit.getTree()); while (walk.next()) { if (!filter.include(walker, commit, walk)) return include(false); if (walk.isSubtree()) walk.enterSubtree(); } return true; } }
/** * Lookup an entry stored in a tree, failing if not present. * * @param tree * the tree to search. * @param path * the path to find the entry of. * @return the parsed object entry at this path, never null. * @throws Exception */ public RevObject get(final RevTree tree, final String path) throws Exception { final TreeWalk tw = new TreeWalk(pool.getObjectReader()); tw.setFilter(PathFilterGroup.createFromStrings(Collections .singleton(path))); tw.reset(tree); while (tw.next()) { if (tw.isSubtree() && !path.equals(tw.getPathString())) { tw.enterSubtree(); continue; } final ObjectId entid = tw.getObjectId(0); final FileMode entmode = tw.getFileMode(0); return pool.lookupAny(entid, entmode.getObjectType()); } fail("Can't find " + path + " in tree " + tree.name()); return null; // never reached. }
private static boolean visit(final Repository repository, final TreeWalk walk, final MutableObjectId id, final String path, final ITreeVisitor visitor) throws IOException { while (walk.next()) { if (walk.isPostChildren()) break; if (walk.isSubtree()) { final String subTreePath = walk.getPathString(); walk.enterSubtree(); if (!visit(repository, walk, id, subTreePath, visitor)) return false; } walk.getObjectId(id, 0); if (!visitor.accept(walk.getFileMode(0), path, walk.getNameString(), id)) return false; } return true; } }
public boolean include(final RevWalk walker, final RevCommit commit) throws IOException { final TreeWalk walk = TreeUtils.diffWithParents(walker, commit); final MutableObjectId id = new MutableObjectId(); final ObjectId zero = ObjectId.zeroId(); final DuplicateContainer dupes = new DuplicateContainer(commit); while (walk.next()) { if (!walk.isSubtree()) continue; final String path = walk.getPathString(); for (int i = 0; i < walk.getTreeCount(); i++) { walk.getObjectId(id, i); if (!zero.equals(id)) dupes.include(id.toObjectId(), path); } walk.enterSubtree(); } if (dupes.validate()) duplicates.put(commit, dupes); return true; }
if (!o.has(COMPLETE)) { o.add(COMPLETE); treeWalk.enterSubtree();
@Override public boolean include(final RevWalk walker, final RevCommit commit) throws IOException { final TreeWalk walk = new TreeWalk(walker.getObjectReader()); walk.addTree(commit.getTree()); RevTree tree = null; for (RevCommit parent : commit.getParents()) { tree = parent.getTree(); if (tree == null) { walker.parseHeaders(parent); tree = parent.getTree(); } walk.addTree(tree); } while (walk.next()) { if (filter.include(walker, commit, walk)) return true; if (walk.isSubtree()) walk.enterSubtree(); } return include(false); }