diff --git a/Documentation/access-control.txt b/Documentation/access-control.txt index e259048ba2..1a0c0dbf87 100644 --- a/Documentation/access-control.txt +++ b/Documentation/access-control.txt @@ -741,9 +741,11 @@ patch set. This category permits users to remove other users from the list of reviewers on a change. -The change owner, project owner and site administrator can always -remove reviewers (even without having the `Remove Reviewer` access -right assigned). +Change owners can always remove reviewers who have given a zero or positive +score (even without having the `Remove Reviewer` access right assigned). + +Project owners and site administrators can always remove any reviewer (even +without having the `Remove Reviewer` access right assigned). Users without this access right can only remove themselves from the reviewer list on a change. diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java index 8202b1327b..da0d052647 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.java @@ -65,6 +65,7 @@ public class Reviewers extends Composite { @UiField Element reviewersText; @UiField Button openForm; + @UiField Button addMe; @UiField Element form; @UiField Element error; @UiField(provided = true) @@ -146,7 +147,7 @@ public class Reviewers extends Composite { } } - @UiHandler("addme") + @UiHandler("addMe") void onAddMe(@SuppressWarnings("unused") ClickEvent e) { String accountId = String.valueOf(Gerrit.getUserAccountInfo()._account_id()); addReviewer(accountId, false); @@ -248,6 +249,13 @@ public class Reviewers extends Composite { reviewersText.setInnerSafeHtml(rHtml); ccText.setInnerSafeHtml(ccHtml); + if (Gerrit.isSignedIn()) { + int currentUser = Gerrit.getUserAccountInfo()._account_id(); + boolean showAddMeButton = info.owner()._account_id() != currentUser + && !cc.containsKey(currentUser) + && !r.containsKey(currentUser); + addMe.setVisible(showAddMeButton); + } } private static Map votable(ChangeInfo change) { diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml index 4e3b0c6e2a..024197d48d 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/Reviewers.ui.xml @@ -72,7 +72,8 @@ limitations under the License.
Add
- +
Add Me
reviewers) throws OrmException, IOException { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java index d34d1e330d..17cd06a068 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/CherryPick.java @@ -235,4 +235,4 @@ public class CherryPick extends SubmitStrategy { return args.mergeUtil.canCherryPick(args.mergeSorter, args.repo, mergeTip, args.rw, toMerge); } -} \ No newline at end of file +}