My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions

Issue 1142 attachment: 1142.patch (2.4 KB)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
From 2883647c2b52d370042ec18c08fef3daf2543a7c Mon Sep 17 00:00:00 2001
From: Deniz Turkoglu <deniz@spotify.com>
Date: Wed, 14 Dec 2011 19:26:45 +0100
Subject: [PATCH] TOOLS-139 Bogus merge claimed by gerrit

When a change set is pending review, it is considered
merged if it is pushed to another branch bypassing
review process. This patch compares the branch names
and closes the change only if they are aimed at the
same branch.

This updated patch also fixes the state issue after
merging the change.

Change-Id: I3751bc3f33181d987fc0c52ed97b53a13af7044a
---
.../java/com/google/gerrit/server/git/MergeOp.java | 2 +-
.../google/gerrit/server/git/ReceiveCommits.java | 6 +++++-
2 files changed, 6 insertions(+), 2 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 fd6f94b..681ac6e 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
@@ -336,7 +336,7 @@ public class MergeOp {
}

for (final Ref r : db.getAllRefs().values()) {
- if (r.getName().startsWith(Constants.R_HEADS)
+ if ((r.getName().startsWith(Constants.R_HEADS) && r.getName().startsWith(destBranch.get()))
|| r.getName().startsWith(Constants.R_TAGS)) {
try {
alreadyAccepted.add(rw.parseCommit(r.getObjectId()));
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
index 5034a04..5fccc70 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
@@ -1800,7 +1800,11 @@ public class ReceiveCommits implements PreReceiveHook, PostReceiveHook {
final Ref ref = byCommit.get(c.copy());
if (ref != null) {
rw.parseBody(c);
- closeChange(cmd, PatchSet.Id.fromRef(ref.getName()), c);
+ final PatchSet.Id id = PatchSet.Id.fromRef(ref.getName());
+ final Change change = db.changes().get(id.getParentKey());
+ if(cmd.getRefName().equals(change.getDest().get())) {
+ closeChange(cmd, id, c);
+ }
continue;
}

--
1.7.5.4

Powered by Google Project Hosting