.setOldTree(oldTreeIter) .setShowNameAndStatusOnly(true) .call();
private static void listDiff(Repository repository, Git git, String oldCommit, String newCommit) throws GitAPIException, IOException { final List<DiffEntry> diffs = git.diff() .setOldTree(prepareTreeParser(repository, oldCommit)) .setNewTree(prepareTreeParser(repository, newCommit)) .call(); System.out.println("Found: " + diffs.size() + " differences"); for (DiffEntry diff : diffs) { System.out.println("Diff: " + diff.getChangeType() + ": " + (diff.getOldPath().equals(diff.getNewPath()) ? diff.getNewPath() : diff.getOldPath() + " -> " + diff.getNewPath())); } }
private static void listDiff(Repository repository, Git git, String oldCommit, String newCommit) throws GitAPIException, IOException { final List<DiffEntry> diffs = git.diff() .setOldTree(prepareTreeParser(repository, oldCommit)) .setNewTree(prepareTreeParser(repository, newCommit)) .call(); System.out.println("Found: " + diffs.size() + " differences"); for (DiffEntry diff : diffs) { System.out.println("Diff: " + diff.getChangeType() + ": " + (diff.getOldPath().equals(diff.getNewPath()) ? diff.getNewPath() : diff.getOldPath() + " -> " + diff.getNewPath())); } }
private static @NonNull DiffEntry diffFile(Repository repo, String oldCommit, String newCommit, String path) throws IOException, GitAPIException { Config config = new Config(); config.setBoolean("diff", null, "renames", true); DiffConfig diffConfig = config.get(DiffConfig.KEY); try (Git git = new Git(repo)) { List<DiffEntry> diffList = git.diff(). setOldTree(prepareTreeParser(repo, oldCommit)). setNewTree(prepareTreeParser(repo, newCommit)). setPathFilter(FollowFilter.create(path, diffConfig)). call(); if (diffList.size() == 0) return null; if (diffList.size() > 1) throw new RuntimeException("invalid diff"); return diffList.get(0); } } }
private static @NonNull DiffEntry diffFile(Repository repo, String oldCommit, String newCommit, String path) throws IOException, GitAPIException { Config config = new Config(); config.setBoolean("diff", null, "renames", true); DiffConfig diffConfig = config.get(DiffConfig.KEY); try (Git git = new Git(repo)) { List<DiffEntry> diffList = git.diff(). setOldTree(prepareTreeParser(repo, oldCommit)). setNewTree(prepareTreeParser(repo, newCommit)). setPathFilter(FollowFilter.create(path, diffConfig)). call(); if (diffList.size() == 0) return null; if (diffList.size() > 1) throw new RuntimeException("invalid diff"); return diffList.get(0); } } }
public static void main(String[] args) throws IOException, GitAPIException { try (Repository repository = CookbookHelper.openJGitCookbookRepository()) { try (Git git = new Git(repository)) { if(repository.exactRef("refs/heads/testbranch") == null) { // first we need to ensure that the remote branch is visible locally Ref ref = git.branchCreate().setName("testbranch").setStartPoint("origin/testbranch").call(); System.out.println("Created local testbranch with ref: " + ref); } // the diff works on TreeIterators, we prepare two for the two branches AbstractTreeIterator oldTreeParser = prepareTreeParser(repository, "refs/heads/testbranch"); AbstractTreeIterator newTreeParser = prepareTreeParser(repository, "refs/heads/master"); // then the procelain diff-command returns a list of diff entries List<DiffEntry> diff = git.diff().setOldTree(oldTreeParser).setNewTree(newTreeParser).call(); for (DiffEntry entry : diff) { System.out.println("Entry: " + entry); } } } }
public static void main(String[] args) throws IOException, GitAPIException { try (Repository repository = CookbookHelper.openJGitCookbookRepository()) { try (Git git = new Git(repository)) { if(repository.exactRef("refs/heads/testbranch") == null) { // first we need to ensure that the remote branch is visible locally Ref ref = git.branchCreate().setName("testbranch").setStartPoint("origin/testbranch").call(); System.out.println("Created local testbranch with ref: " + ref); } // the diff works on TreeIterators, we prepare two for the two branches AbstractTreeIterator oldTreeParser = prepareTreeParser(repository, "refs/heads/testbranch"); AbstractTreeIterator newTreeParser = prepareTreeParser(repository, "refs/heads/master"); // then the procelain diff-command returns a list of diff entries List<DiffEntry> diff = git.diff().setOldTree(oldTreeParser).setNewTree(newTreeParser).call(); for (DiffEntry entry : diff) { System.out.println("Entry: " + entry); } } } }
List<DiffEntry> diffs= git.diff() .setNewTree(newTreeIter) .setOldTree(oldTreeIter) .call(); for (DiffEntry entry : diffs) {
List<DiffEntry> diffs= git.diff() .setNewTree(newTreeIter) .setOldTree(oldTreeIter) .call(); for (DiffEntry entry : diffs) {
public static void main(String[] args) throws IOException, GitAPIException { try (Repository repository = CookbookHelper.openJGitCookbookRepository()) { // the diff works on TreeIterators, we prepare two for the two branches AbstractTreeIterator oldTreeParser = prepareTreeParser(repository, "b97b184b0ce11c0b6a4dcc2b57768ff155cb696b"); AbstractTreeIterator newTreeParser = prepareTreeParser(repository, "9e0719d7d773b41b49ebf04e6fd7b5c637e96063"); // then the porcelain diff-command returns a list of diff entries try (Git git = new Git(repository)) { List<DiffEntry> diff = git.diff(). setOldTree(oldTreeParser). setNewTree(newTreeParser). setPathFilter(PathFilter.create("README.md")). // to filter on Suffix use the following instead //setPathFilter(PathSuffixFilter.create(".java")). call(); for (DiffEntry entry : diff) { System.out.println("Entry: " + entry + ", from: " + entry.getOldId() + ", to: " + entry.getNewId()); try (DiffFormatter formatter = new DiffFormatter(System.out)) { formatter.setRepository(repository); formatter.format(entry); } } } } }
public static void main(String[] args) throws IOException, GitAPIException { try (Repository repository = CookbookHelper.openJGitCookbookRepository()) { // the diff works on TreeIterators, we prepare two for the two branches AbstractTreeIterator oldTreeParser = prepareTreeParser(repository, "b97b184b0ce11c0b6a4dcc2b57768ff155cb696b"); AbstractTreeIterator newTreeParser = prepareTreeParser(repository, "9e0719d7d773b41b49ebf04e6fd7b5c637e96063"); // then the porcelain diff-command returns a list of diff entries try (Git git = new Git(repository)) { List<DiffEntry> diff = git.diff(). setOldTree(oldTreeParser). setNewTree(newTreeParser). setPathFilter(PathFilter.create("README.md")). // to filter on Suffix use the following instead //setPathFilter(PathSuffixFilter.create(".java")). call(); for (DiffEntry entry : diff) { System.out.println("Entry: " + entry + ", from: " + entry.getOldId() + ", to: " + entry.getNewId()); try (DiffFormatter formatter = new DiffFormatter(System.out)) { formatter.setRepository(repository); formatter.format(entry); } } } } }
/** * Gets the diff between heads on two branches. * See * https://github.com/centic9/jgit-cookbook/blob/master/src/main/java/org/dstadler/jgit/porcelain/ShowBranchDiff.java. */ private List<DiffEntry> calculateBranchDiffs(Git git, String targetRef, String reviewRef) throws IOException, GitAPIException { AbstractTreeIterator oldTreeParser = prepareTreeParser(targetRef); AbstractTreeIterator newTreeParser = prepareTreeParser(reviewRef); return git.diff().setOldTree(oldTreeParser).setNewTree(newTreeParser).call(); }
private boolean indexIsEmpty(DirCache dc) throws Exception { DirCacheIterator dci = new DirCacheIterator(dc); AbstractTreeIterator old = prepareTreeParser(repository, repository.resolve(Constants.HEAD)); try (Git git = new Git(repository)) { List<DiffEntry> diffs = git.diff().setOldTree(old).setNewTree(dci).call(); return diffs.isEmpty(); } }
/** * Gets the diff between two commits. */ private List<DiffEntry> calculateCommitDiffs(Git git, RevCommit first, RevCommit last) throws IOException, GitAPIException { AbstractTreeIterator oldTreeParser = prepareTreeParser(first); AbstractTreeIterator newTreeParser = prepareTreeParser(last); return git.diff().setOldTree(oldTreeParser).setNewTree(newTreeParser).call(); }
public static List<DiffEntry> getDiff( final Repository repo, final ObjectId oldRef, final ObjectId newRef ) { if ( oldRef == null || newRef == null || repo == null ) { return emptyList(); } try { ObjectReader reader = repo.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset( reader, oldRef ); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset( reader, newRef ); return new Git( repo ).diff().setNewTree( newTreeIter ).setOldTree( oldTreeIter ).setShowNameAndStatusOnly( true ).call(); } catch ( final Exception ex ) { throw new RuntimeException( ex ); } }
private static boolean commitContainsChangesToParent(Git git, Repository repo, AnyObjectId commitTreeId, AnyObjectId parentTreeId) throws MissingObjectException, IncorrectObjectTypeException, CorruptObjectException, IOException, GitAPIException { DiffCommand diffCommand = git.diff(); TreeWalk parentWalk = new TreeWalk(repo); parentWalk.addTree(parentTreeId); parentWalk.setRecursive(true); TreeWalk commitWalk = new TreeWalk(repo); commitWalk.addTree(commitTreeId); commitWalk.setRecursive(true); CanonicalTreeParser commitTreeParser = new CanonicalTreeParser(null, commitWalk.getObjectReader(), commitTreeId); CanonicalTreeParser parentTreeParser = new CanonicalTreeParser(null, parentWalk.getObjectReader(), parentTreeId); diffCommand.setOldTree(parentTreeParser); diffCommand.setNewTree(commitTreeParser); List<DiffEntry> entries = diffCommand.call(); if (entries.size() > 0) return true; else return false; }
private static boolean commitContainsChangesToParent(Git git, Repository repo, AnyObjectId commitTreeId, AnyObjectId parentTreeId) throws MissingObjectException, IncorrectObjectTypeException, CorruptObjectException, IOException, GitAPIException { DiffCommand diffCommand = git.diff(); TreeWalk parentWalk = new TreeWalk(repo); parentWalk.addTree(parentTreeId); parentWalk.setRecursive(true); TreeWalk commitWalk = new TreeWalk(repo); commitWalk.addTree(commitTreeId); commitWalk.setRecursive(true); CanonicalTreeParser commitTreeParser = new CanonicalTreeParser(null, commitWalk.getObjectReader(), commitTreeId); CanonicalTreeParser parentTreeParser = new CanonicalTreeParser(null, parentWalk.getObjectReader(), parentTreeId); diffCommand.setOldTree(parentTreeParser); diffCommand.setNewTree(commitTreeParser); List<DiffEntry> entries = diffCommand.call(); if (entries.size() > 0) return true; else return false; }
/** * Returns a list fo differences between the last two commits in a branch. * * @param branch - The branch to check for differences against. * @return - List of DiffEntry. * @throws GitAPIException - failed. * @throws IOException - failed */ public List<DiffEntry> getDiffsToRevert(final String branch) throws GitAPIException, IOException { val oldTreeIter = new CanonicalTreeParser(); try (val reader = git.getRepository().newObjectReader()) { oldTreeIter.reset(reader, git.getRepository().resolve(branch + TOP)); val newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, git.getRepository().resolve(branch + TOP_MINUS_1)); return git.diff().setOldTree(oldTreeIter).setNewTree(newTreeIter).call(); } }
/** * Returns the the diffs of two branches. * * @param first - the first branch * @param second - the second branch * @return - List of DiffEntry * @throws GitAPIException - failed * @throws IOException - failed */ public List<DiffEntry> getDiffs(final String first, final String second) throws GitAPIException, IOException { val oldTreeIter = new CanonicalTreeParser(); try (val reader = git.getRepository().newObjectReader()) { oldTreeIter.reset(reader, git.getRepository().resolve(first)); val newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, git.getRepository().resolve(second)); return git.diff().setOldTree(oldTreeIter).setNewTree(newTreeIter).call(); } }
@Override public List<DiffEntry> diff(Git git, RevCommit commit1, RevCommit commit2, boolean showNameAndStatusOnly) throws GitAPIException, IOException { ObjectReader reader = git.getRepository().newObjectReader(); CanonicalTreeParser ctp1 = new CanonicalTreeParser(); CanonicalTreeParser ctp2 = new CanonicalTreeParser(); if (commit1.getTree() == null) { commit1 = new RevWalk(git.getRepository()).parseCommit(commit1); } if (commit2.getTree() == null) { commit2 = new RevWalk(git.getRepository()).parseCommit(commit2); } ctp1.reset(reader, commit1.getTree()); ctp2.reset(reader, commit2.getTree()); return git.diff() .setShowNameAndStatusOnly(showNameAndStatusOnly) .setOldTree(ctp1) .setNewTree(ctp2) .call(); }