From ce119acc6dbb3153af1cbbf7ec1270d21f5e52c8 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 17 Apr 2011 16:10:38 -0400 Subject: [PATCH] patch-to-current feature. --- src/com/gitblit/utils/JGitUtils.java | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/com/gitblit/utils/JGitUtils.java b/src/com/gitblit/utils/JGitUtils.java index 9b2e37c..5590ffe 100644 --- a/src/com/gitblit/utils/JGitUtils.java +++ b/src/com/gitblit/utils/JGitUtils.java @@ -362,16 +362,25 @@ } public static String getCommitPatch(Repository r, RevCommit commit, String path) { + return getCommitPatch(r, null, commit, path); + } + + public static String getCommitPatch(Repository r, RevCommit baseCommit, RevCommit commit, String path) { try { - final RevWalk rw = new RevWalk(r); - RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); - RevTree parentTree = parent.getTree(); + RevTree baseTree; + if (baseCommit == null) { + final RevWalk rw = new RevWalk(r); + RevCommit parent = rw.parseCommit(commit.getParent(0).getId()); + baseTree = parent.getTree(); + } else { + baseTree = baseCommit.getTree(); + } RevTree commitTree = commit.getTree(); final TreeWalk walk = new TreeWalk(r); walk.reset(); walk.setRecursive(true); - walk.addTree(parentTree); + walk.addTree(baseTree); walk.addTree(commitTree); walk.setFilter(TreeFilter.ANY_DIFF); @@ -381,7 +390,7 @@ df.setRepository(r); df.setDiffComparator(cmp); df.setDetectRenames(true); - List<DiffEntry> diffs = df.scan(parentTree, commitTree); + List<DiffEntry> diffs = df.scan(baseTree, commitTree); if (path != null && path.length() > 0) { for (DiffEntry diff : diffs) { if (diff.getNewPath().equalsIgnoreCase(path)) { -- Gitblit v1.9.1