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