Java Code Examples for org.eclipse.jgit.treewalk.TreeWalk#reset()
The following examples show how to use
org.eclipse.jgit.treewalk.TreeWalk#reset() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: GitConnector.java From compiler with Apache License 2.0 | 6 votes |
public List<String> getSnapshot(String commit) { ArrayList<String> snapshot = new ArrayList<String>(); TreeWalk tw = new TreeWalk(repository); tw.reset(); try { RevCommit rc = revwalk.parseCommit(repository.resolve(commit)); tw.addTree(rc.getTree()); tw.setRecursive(true); while (tw.next()) { if (!tw.isSubtree()) { String path = tw.getPathString(); snapshot.add(path); } } } catch (IOException e) { System.err.println(e.getMessage()); } tw.close(); return snapshot; }
Example 2
Source File: TreeRevFilter.java From onedev with MIT License | 5 votes |
private void updateFollowFilter(ObjectId[] trees, DiffConfig cfg) throws MissingObjectException, IncorrectObjectTypeException, CorruptObjectException, IOException { TreeWalk tw = pathFilter; FollowFilter oldFilter = (FollowFilter) tw.getFilter(); tw.setFilter(TreeFilter.ANY_DIFF); tw.reset(trees); List<DiffEntry> files = DiffEntry.scan(tw); RenameDetector rd = new RenameDetector(tw.getObjectReader(), cfg); rd.addAll(files); files = rd.compute(); TreeFilter newFilter = oldFilter; for (DiffEntry ent : files) { if (isRename(ent) && ent.getNewPath().equals(oldFilter.getPath())) { newFilter = FollowFilter.create(ent.getOldPath(), cfg); RenameCallback callback = oldFilter.getRenameCallback(); if (callback != null) { callback.renamed(ent); // forward the callback to the new follow filter ((FollowFilter) newFilter).setRenameCallback(callback); } break; } } tw.setFilter(newFilter); }
Example 3
Source File: ExportCommitCommand.java From netbeans with Apache License 2.0 | 5 votes |
@Override protected void run() throws GitException { Repository repository = getRepository(); String workTreePath = repository.getWorkTree().getAbsolutePath(); RevCommit commit = Utils.findCommit(repository, revisionStr); if (commit.getParentCount() > 1) { throw new GitException("Unable to export a merge commit"); } try (DiffFormatter formatter = new DiffFormatter(out)) { out.write(Constants.encode(formatCommitInfo(commit))); formatter.setRepository(repository); List<DiffEntry> diffEntries; if (commit.getParentCount() > 0) { formatter.setDetectRenames(true); diffEntries = formatter.scan(commit.getParent(0), commit); } else { TreeWalk walk = new TreeWalk(repository); walk.reset(); walk.setRecursive(true); walk.addTree(new EmptyTreeIterator()); walk.addTree(commit.getTree()); walk.setFilter(AndTreeFilter.create(TreeFilter.ANY_DIFF, PathFilter.ANY_DIFF)); diffEntries = DiffEntry.scan(walk); } for (DiffEntry ent : diffEntries) { if (monitor.isCanceled()) { break; } listener.notifyFile(new File(workTreePath + File.separator + ent.getNewPath()), ent.getNewPath()); formatter.format(ent); } formatter.flush(); } catch (IOException ex) { throw new GitException(ex); } }
Example 4
Source File: GitConnector.java From compiler with Apache License 2.0 | 5 votes |
@Override public List<ChangedFile> buildHeadSnapshot() { final List<ChangedFile> snapshot = new ArrayList<ChangedFile>(); TreeWalk tw = new TreeWalk(repository); tw.reset(); try { RevCommit rc = revwalk.parseCommit(repository.resolve(Constants.HEAD)); tw.addTree(rc.getTree()); tw.setRecursive(true); while (tw.next()) { if (!tw.isSubtree()) { String path = tw.getPathString(); ChangedFile.Builder cfb = ChangedFile.newBuilder(); cfb.setChange(ChangeKind.UNKNOWN); cfb.setName(path); cfb.setKind(FileKind.OTHER); cfb.setKey(0); cfb.setAst(false); GitCommit gc = new GitCommit(this, repository, revwalk, projectName); gc.filePathGitObjectIds.put(path, tw.getObjectId(0)); gc.processChangeFile(cfb); snapshot.add(cfb.build()); } } } catch (Exception e) { System.err.println(e.getMessage()); } tw.close(); return snapshot; }
Example 5
Source File: GitCommit.java From compiler with Apache License 2.0 | 5 votes |
void updateChangedFiles(RevCommit rc) { if (rc.getParentCount() == 0) { TreeWalk tw = new TreeWalk(repository); tw.reset(); try { tw.addTree(rc.getTree()); tw.setRecursive(true); while (tw.next()) { if (!tw.isSubtree()) { String path = tw.getPathString(); getChangedFile(path, ChangeKind.ADDED); filePathGitObjectIds.put(path, tw.getObjectId(0)); } } } catch (IOException e) { if (debug) System.err.println(e.getMessage()); } tw.close(); } else { parentIndices = new int[rc.getParentCount()]; for (int i = 0; i < rc.getParentCount(); i++) { int parentIndex = connector.revisionMap.get(rc.getParent(i).getName()); // merged commit in git only store diffs between the first parent and the child if (i == 0) updateChangedFiles(rc.getParent(i), parentIndex, rc); parentIndices[i] = parentIndex; } } }
Example 6
Source File: AddTest.java From netbeans with Apache License 2.0 | 4 votes |
public void testAddMixedLineEndings () throws Exception { File f = new File(workDir, "f"); String content = ""; for (int i = 0; i < 10000; ++i) { content += i + "\r\n"; } write(f, content); File[] files = new File[] { f }; GitClient client = getClient(workDir); client.add(files, NULL_PROGRESS_MONITOR); client.commit(files, "commit", null, null, NULL_PROGRESS_MONITOR); Map<File, GitStatus> statuses = client.getStatus(files, NULL_PROGRESS_MONITOR); assertEquals(1, statuses.size()); assertStatus(statuses, workDir, f, true, Status.STATUS_NORMAL, Status.STATUS_NORMAL, Status.STATUS_NORMAL, false); // lets turn autocrlf on StoredConfig cfg = repository.getConfig(); cfg.setString(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_AUTOCRLF, "true"); cfg.save(); // when this starts failing, remove the work around ObjectInserter inserter = repository.newObjectInserter(); TreeWalk treeWalk = new TreeWalk(repository); treeWalk.setFilter(PathFilterGroup.createFromStrings("f")); treeWalk.setRecursive(true); treeWalk.reset(); treeWalk.addTree(new FileTreeIterator(repository)); while (treeWalk.next()) { String path = treeWalk.getPathString(); assertEquals("f", path); WorkingTreeIterator fit = treeWalk.getTree(0, WorkingTreeIterator.class); try (InputStream in = fit.openEntryStream()) { inserter.insert(Constants.OBJ_BLOB, fit.getEntryLength(), in); fail("this should fail, remove the work around"); } catch (EOFException ex) { assertEquals("Input did not match supplied length. 10.000 bytes are missing.", ex.getMessage()); } finally { inserter.close(); } break; } // no err should occur write(f, content + "hello"); statuses = client.getStatus(files, NULL_PROGRESS_MONITOR); assertEquals(1, statuses.size()); assertStatus(statuses, workDir, f, true, Status.STATUS_NORMAL, Status.STATUS_MODIFIED, Status.STATUS_MODIFIED, false); client.add(files, NULL_PROGRESS_MONITOR); statuses = client.getStatus(files, NULL_PROGRESS_MONITOR); assertEquals(1, statuses.size()); assertStatus(statuses, workDir, f, true, Status.STATUS_MODIFIED, Status.STATUS_NORMAL, Status.STATUS_MODIFIED, false); client.commit(files, "message", null, null, NULL_PROGRESS_MONITOR); statuses = client.getStatus(files, NULL_PROGRESS_MONITOR); assertEquals(1, statuses.size()); assertStatus(statuses, workDir, f, true, Status.STATUS_NORMAL, Status.STATUS_NORMAL, Status.STATUS_NORMAL, false); }
Example 7
Source File: AddTest.java From netbeans with Apache License 2.0 | 4 votes |
public void testLineEndingsWindows () throws Exception { if (!isWindows()) { return; } // lets turn autocrlf on StoredConfig cfg = repository.getConfig(); cfg.setString(ConfigConstants.CONFIG_CORE_SECTION, null, ConfigConstants.CONFIG_KEY_AUTOCRLF, "true"); cfg.save(); File f = new File(workDir, "f"); write(f, "a\r\nb\r\n"); File[] roots = new File[] { f }; GitClient client = getClient(workDir); runExternally(workDir, Arrays.asList("git.cmd", "add", "f")); DirCacheEntry e1 = repository.readDirCache().getEntry("f"); client.add(roots, NULL_PROGRESS_MONITOR); DirCacheEntry e2 = repository.readDirCache().getEntry("f"); assertStatus(client.getStatus(roots, NULL_PROGRESS_MONITOR), workDir, f, true, Status.STATUS_ADDED, Status.STATUS_NORMAL, Status.STATUS_ADDED, false); List<String> res = runExternally(workDir, Arrays.asList("git.cmd", "status", "-s")); assertEquals(Arrays.asList("A f"), res); assertEquals(e1.getFileMode(), e2.getFileMode()); assertEquals(e1.getPathString(), e2.getPathString()); assertEquals(e1.getRawMode(), e2.getRawMode()); assertEquals(e1.getStage(), e2.getStage()); assertEquals(e1.getLength(), e2.getLength()); assertEquals(e1.getObjectId(), e2.getObjectId()); write(f, "a\nb\n"); res = runExternally(workDir, Arrays.asList("git.cmd", "status", "-s")); assertEquals(Arrays.asList("AM f"), res); assertStatus(client.getStatus(roots, NULL_PROGRESS_MONITOR), workDir, f, true, Status.STATUS_ADDED, Status.STATUS_MODIFIED, Status.STATUS_ADDED, false); res = runExternally(workDir, Arrays.asList("git.cmd", "commit", "-m", "gugu")); res = runExternally(workDir, Arrays.asList("git.cmd", "checkout", "--", "f")); RevCommit commit = Utils.findCommit(repository, "HEAD"); TreeWalk walk = new TreeWalk(repository); walk.reset(); walk.addTree(commit.getTree()); walk.setFilter(PathFilter.create("f")); walk.setRecursive(true); walk.next(); assertEquals("f", walk.getPathString()); ObjectLoader loader = repository.getObjectDatabase().open(walk.getObjectId(0)); assertEquals(4, loader.getSize()); assertEquals("a\nb\n", new String(loader.getBytes())); assertEquals(e1.getObjectId(), walk.getObjectId(0)); res = runExternally(workDir, Arrays.asList("git.cmd", "status", "-s")); assertEquals(0, res.size()); assertStatus(client.getStatus(roots, NULL_PROGRESS_MONITOR), workDir, f, true, Status.STATUS_NORMAL, Status.STATUS_NORMAL, Status.STATUS_NORMAL, false); }
Example 8
Source File: TreeUtils.java From ParallelGit with Apache License 2.0 | 4 votes |
@Nonnull public static TreeWalk newTreeWalk(AnyObjectId tree, ObjectReader reader) throws IOException { TreeWalk tw = new TreeWalk(reader); tw.reset(tree); return tw; }
Example 9
Source File: TreeUtils.java From ParallelGit with Apache License 2.0 | 4 votes |
@Nonnull public static TreeWalk newTreeWalk(AnyObjectId tree, ObjectReader reader) throws IOException { TreeWalk tw = new TreeWalk(reader); tw.reset(tree); return tw; }