summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2013-07-16 11:17:34 -0700
committerDave Borowitz <dborowitz@google.com>2013-07-16 13:44:27 -0700
commit7549dfa8174410f1fe5f0da385a9762fb3614840 (patch)
tree367d72cc9742757a20622547251055ccdc157044
parentb5e529cabd87f1ca27a8664b279decabf3879ef5 (diff)
Mark ALREADY_MERGED changes as merged in the DB
If a change is marked ALREADY_MERGED, likely a result of a bug in the merge code, it does not end up in the toSubmit list and so was never being marked as merged, despite the branch head already having advanced. Fix this so ALREADY_MERGED changes are updated to match the branch state. This does not fix any bugs in the merge code proper, but at least allows recovery from a certain kind of bad state. Works around (does not fix) bug 1985 and perhaps bug 600. Change-Id: I44548cce039e303a86d579b0b0d76b12ad9bdcfb
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java5
1 files changed, 5 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
index a59a216417..9715d9c47f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
@@ -598,6 +598,11 @@ public class MergeOp {
try {
if (rw.isMergedInto(commit, branchTip)) {
commit.statusCode = CommitMergeStatus.ALREADY_MERGED;
+ try {
+ setMergedPatchSet(chg.getId(), ps.getId());
+ } catch (OrmException e) {
+ log.error("Cannot mark change " + chg.getId() + " merged", e);
+ }
continue;
}
} catch (IOException err) {