Merge "Fix auto closing of changes on direct push" into stable-2.5
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 57996a6..9f781a0 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
@@ -1446,8 +1446,8 @@
       this.checkMergedInto = checkMergedInto;
     }
 
-    boolean validate(boolean ignoreNoChanges) throws IOException {
-      if (inputCommand.getResult() != NOT_ATTEMPTED) {
+    boolean validate(boolean autoClose) throws IOException {
+      if (!autoClose && inputCommand.getResult() != NOT_ATTEMPTED) {
         return false;
       }
 
@@ -1520,7 +1520,7 @@
             final boolean parentsEq = parentsEqual(newCommit, prior);
             final boolean authorEq = authorEqual(newCommit, prior);
 
-            if (messageEq && parentsEq && authorEq && !ignoreNoChanges) {
+            if (messageEq && parentsEq && authorEq && !autoClose) {
               reject(inputCommand, "no changes made");
               return false;
             } else {
@@ -2091,7 +2091,10 @@
         for (final String changeId : c.getFooterLines(CHANGE_ID)) {
           final Change.Id onto = byKey.get(new Change.Key(changeId.trim()));
           if (onto != null) {
-            toClose.add(new ReplaceRequest(onto, c, cmd, false));
+            final ReplaceRequest req = new ReplaceRequest(onto, c, cmd, false);
+            req.change = db.changes().get(onto);
+            req.patchSets = db.patchSets().byChange(onto).toList();
+            toClose.add(req);
             break;
           }
         }