diff options
author | Shawn Pearce <sop@google.com> | 2013-09-06 10:02:41 -0700 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2015-09-23 17:56:04 +0000 |
commit | 23bd4f119457daa0a436c1342722d538f0e1fb02 (patch) | |
tree | d1e2e65507fe4f14f506d437ac36f08a678605be | |
parent | dc3e2526ddce66ebc2d53a22a70f3a112b4aa510 (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.java | 16 |
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; } |