summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Pearce <sop@google.com>2013-09-06 10:02:41 -0700
committerOswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>2015-09-23 17:56:04 +0000
commit23bd4f119457daa0a436c1342722d538f0e1fb02 (patch)
treed1e2e65507fe4f14f506d437ac36f08a678605be
parentdc3e2526ddce66ebc2d53a22a70f3a112b4aa510 (diff)
Don't create empty cherry-picks
If the tree after a cherry-pick is identical to the new parent's tree the newly picked commit is empty. This can happen if the commit is being cherry-picked on top of another version of itself, or was already included in the target branch. Change-Id: I7e3fe9c02ca0b5182635a6e202b1d38e4dc39405 (cherry picked from commit fd889d9db648e6f027ee5d2e295041cb1bc3591a) Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java16
1 files changed, 7 insertions, 9 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java
index 3468e9775d..b4992981ca 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeUtil.java
@@ -221,20 +221,18 @@ public class MergeUtil {
m.setBase(originalCommit.getParent(0));
if (m.merge(mergeTip, originalCommit)) {
+ ObjectId tree = m.getResultTreeId();
+ if (tree.equals(mergeTip.getTree())) {
+ return null;
+ }
- final CommitBuilder mergeCommit = new CommitBuilder();
-
- mergeCommit.setTreeId(m.getResultTreeId());
+ CommitBuilder mergeCommit = new CommitBuilder();
+ mergeCommit.setTreeId(tree);
mergeCommit.setParentId(mergeTip);
mergeCommit.setAuthor(originalCommit.getAuthorIdent());
mergeCommit.setCommitter(cherryPickCommitterIdent);
mergeCommit.setMessage(commitMsg);
-
- final ObjectId id = commit(inserter, mergeCommit);
- final CodeReviewCommit newCommit =
- (CodeReviewCommit) rw.parseCommit(id);
-
- return newCommit;
+ return (CodeReviewCommit) rw.parseCommit(commit(inserter, mergeCommit));
} else {
return null;
}