Merge "Add release notes for Gerrit 2.5.1" into stable-2.5
diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/Permission.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/Permission.java
index 5cb7787..fd40888 100644
--- a/gerrit-common/src/main/java/com/google/gerrit/common/data/Permission.java
+++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/Permission.java
@@ -80,9 +80,6 @@
     if (AccessSection.ALL.equals(ref)) {
       return !OWNER.equals(permissionName);
     }
-    if (AccessSection.REF_CONFIG.equals(ref)) {
-      return !PUSH.equals(permissionName);
-    }
     return true;
   }
 
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
index c164d48..a826c88 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
@@ -356,6 +356,9 @@
 
   private Injector createWebInjector() {
     final List<Module> modules = new ArrayList<Module>();
+    if (sshd) {
+      modules.add(new ProjectQoSFilter.Module());
+    }
     modules.add(RequestContextFilter.module());
     modules.add(AllRequestFilter.module());
     modules.add(CacheBasedWebSession.module());
@@ -365,7 +368,6 @@
     modules.add(new HttpPluginModule());
     if (sshd) {
       modules.add(sshInjector.getInstance(WebSshGlueModule.class));
-      modules.add(new ProjectQoSFilter.Module());
     } else {
       modules.add(new NoSshModule());
     }
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java
index 2d6db63..8d320d4 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/http/jetty/ProjectQoSFilter.java
@@ -71,7 +71,7 @@
   private static final String CANCEL = ATT_SPACE + "/CANCEL";
 
   private static final String FILTER_RE =
-      "^/p/(.*)/(git-upload-pack|git-receive-pack)$";
+      "^/(.*)/(git-upload-pack|git-receive-pack)$";
   private static final Pattern URI_PATTERN = Pattern.compile(FILTER_RE);
 
   public static class Module extends ServletModule {
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;
           }
         }