From 23bd4f119457daa0a436c1342722d538f0e1fb02 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Fri, 6 Sep 2013 10:02:41 -0700 Subject: 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 --- .../java/com/google/gerrit/server/git/MergeUtil.java | 16 +++++++--------- 1 file 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; } -- cgit v1.2.3