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