Demon has submitted this change and it was merged.

Change subject: Allow adding patch sets only to visible changes
......................................................................


Allow adding patch sets only to visible changes

Thereby, we prohibit adding patch sets to invisible drafts of others.

Change-Id: I7d942ccde77e8e779a87ef5b3862404bd3632365
---
M 
gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/ChangeDetailFactory.java
M 
gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/EditCommitMessageHandler.java
M gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java
M gerrit-server/src/main/java/com/google/gerrit/server/git/ReceiveCommits.java
M 
gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
5 files changed, 10 insertions(+), 9 deletions(-)

Approvals:
  Demon: Verified; Looks good to me, approved



diff --git 
a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/ChangeDetailFactory.java
 
b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/ChangeDetailFactory.java
index 4ad0725..78531db 100644
--- 
a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/ChangeDetailFactory.java
+++ 
b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/ChangeDetailFactory.java
@@ -135,12 +135,12 @@
     detail.setStarred(control.getCurrentUser().getStarredChanges().contains(
         changeId));
 
-    detail.setCanRevert(change.getStatus() == Change.Status.MERGED && 
control.canAddPatchSet());
+    detail.setCanRevert(change.getStatus() == Change.Status.MERGED && 
control.canAddPatchSet(db));
 
     
detail.setCanCherryPick(control.getProjectControl().canPushToAtLeastOneRef() == 
Capable.OK);
 
     detail.setCanEdit(control.getRefControl().canWrite());
-    detail.setCanEditCommitMessage(change.getStatus().isOpen() && 
control.canAddPatchSet());
+    detail.setCanEditCommitMessage(change.getStatus().isOpen() && 
control.canAddPatchSet(db));
     detail.setCanEditTopicName(control.canEditTopicName());
 
     List<SubmitRecord> submitRecords = control.getSubmitRecords(db, patch);
diff --git 
a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/EditCommitMessageHandler.java
 
b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/EditCommitMessageHandler.java
index 4bb182f..3348eb0 100644
--- 
a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/EditCommitMessageHandler.java
+++ 
b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/changedetail/EditCommitMessageHandler.java
@@ -102,7 +102,7 @@
 
     final Change.Id changeId = patchSetId.getParentKey();
     final ChangeControl control = changeControlFactory.validateFor(changeId);
-    if (!control.canAddPatchSet()) {
+    if (!control.canAddPatchSet(db)) {
       throw new InvalidChangeOperationException(
           "Not allowed to add new Patch Sets to: " + changeId.toString());
     }
diff --git 
a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java 
b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java
index 154bd64..13da1b6 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java
@@ -80,7 +80,8 @@
   public Object apply(ChangeResource req, Input input) throws Exception {
     ChangeControl control = req.getControl();
     Change change = req.getChange();
-    if (!control.canAddPatchSet()) {
+    ReviewDb db = dbProvider.get();
+    if (!control.canAddPatchSet(db)) {
       throw new AuthException("revert not permitted");
     } else if (change.getStatus() != Status.MERGED) {
       throw new ResourceConflictException("change is " + status(change));
@@ -95,7 +96,7 @@
           ChangeUtil.revert(control.getRefControl(), 
change.currentPatchSetId(),
               (IdentifiedUser) control.getCurrentUser(),
               commitValidators,
-              Strings.emptyToNull(input.message), dbProvider.get(),
+              Strings.emptyToNull(input.message), db,
               revertedSenderFactory, hooks, git, patchSetInfoFactory,
               myIdent, changeInserter);
 
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 2177954..8d92971 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
@@ -1690,7 +1690,7 @@
       }
     }
 
-    boolean validate(boolean autoClose) throws IOException {
+    boolean validate(boolean autoClose) throws IOException, OrmException {
       if (!autoClose && inputCommand.getResult() != NOT_ATTEMPTED) {
         return false;
       } else if (change == null) {
@@ -1712,7 +1712,7 @@
       }
 
       changeCtl = projectControl.controlFor(change);
-      if (!changeCtl.canAddPatchSet()) {
+      if (!changeCtl.canAddPatchSet(db)) {
         reject(inputCommand, "cannot replace " + ontoChange);
         return false;
       } else if (change.getStatus().isClosed()) {
diff --git 
a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
 
b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
index d09dcb7..862d155 100644
--- 
a/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
+++ 
b/gerrit-server/src/main/java/com/google/gerrit/server/project/ChangeControl.java
@@ -258,8 +258,8 @@
   }
 
   /** Can this user add a patch set to this change? */
-  public boolean canAddPatchSet() {
-    return getRefControl().canUpload();
+  public boolean canAddPatchSet(final ReviewDb db) throws OrmException {
+    return getRefControl().canUpload() && isVisible(db);
   }
 
   /** Is this user the owner of the change? */

-- 
To view, visit https://gerrit.wikimedia.org/r/64309
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I7d942ccde77e8e779a87ef5b3862404bd3632365
Gerrit-PatchSet: 1
Gerrit-Project: gerrit
Gerrit-Branch: wmf
Gerrit-Owner: QChris <[email protected]>
Gerrit-Reviewer: Demon <[email protected]>
Gerrit-Reviewer: QChris <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to