Membership

Membership in a P4 Code Review project identifies users as belonging to the project, making them part of the team.

The are only a few notable differences between project members and non-members:

Difference Member Non-Member Description
Notifications Receives Notification image Does Not Receive Notification image

Members receive project notifications; non-members do not.

Avatars Receives Notification image Does Not Receive Notification image

The project's home page features member's avatars.

States Receives Notification image Does Not Receive Notification image

Members, moderators, and authors can transition code review states; non-members cannot.

There are two ways to become a member of a project in P4 Code Review:

  1. Add a project and make yourself a member.
  2. Ask a member of an existing project to add you as a member.

    If the project has any owners specified, you need to ask a project owner to add you as a member.

Users with super privileges in P4 Server can always adjust the settings for any project, including adjusting membership.

Add a member

If you are an owner of a project, or a member of a project without specified owners:

  1. Visit the project page that needs the new member.
  2. Click Settings in the project's toolbar.
  3. The Members pane displays a list of all the project members.

  4. Click Manage members button and specify a P4 Server user, P4 Server group, or P4 Code Review project to add to the members for this project. The field auto-suggests projectids, groupids, and userids by matching what you have typed so far against the list of users in the P4 Server.

    When you specify a project or group, all of the members of that project or group become members of this project. P4 Code Review does not display all of the individual users, but it does provide a visual separation: project or group names are displayed first, with a darker blue background.

    Adding a Project Member image
  5. Click Add.

Remove a member

If you are an owner of a project, or a member of a project without specified owners:

  1. Visit the project page that has a member you want to remove.
  2. Click Settings in the project's toolbar.

    Known members of the project are displayed beneath the Members text field, with a medium blue button representing projects or groups and a light blue button representing individual users.

  3. Click the X next to the project id, group id, or userid you want to remove.
  4. Click Save.

You are able to remove your own membership or ownership. Doing so could prevent you from managing the project.

Owners

A project owner is a P4 Server user that controls the configuration for a project. An owner does not need to be a member of a project, but only an owner or user with super privileges in P4 Server can edit any project settings.

The project Automated Tests and Automated Deployment details are hidden from project members unless they are an owner or an administrator. This enables project members to check the project settings but not change them.

Moderators

A project moderator is a user assigned to moderate reviews for a specific branch associated with a project. See how to specify moderators.

Once the branch specification is complete and the project has been saved, changing the state of any review associated with the moderated branch is restricted as follows:

Only moderators can approve or reject reviews on the branch.

To add moderators to a branch:

  1. Click the Manage moderators button.

  2. Choose the Users or Groups tab.

    1. If you selected Users, start typing a the name of a user. Suggested users on the P4 Server will appear automatically.

    2. If you selected groups, then all of the members of that group will have the same moderator privileges for that project branch. Use this option if you wanted to add several users at once.

  3. Click Add.

After you finish setting up the branch and save the project, reviews on this branch can only be approved or rejected by moderators.

Moderators can also transition a review to any other state. Below is a summary of branch moderator roles and review state rules.

Role Allowed actions Restrictions

Moderators

Can move a review to any state.

Can approve or reject reviews.

Can prevent automatic approvals.

None (unless disable_self_approve is enabled for self-approval). For more information, see disable_self_approve.

Authors (not moderators)

Can change state to:

  • Needs review

  • Needs revision

  • Archived

Can attach committed changelists.

Cannot approve or reject reviews.

Authors (also moderators)

Can change state to:

  • Approve

  • Rejected

  • Needs review

  • Needs revision

  • Archived

Can attach committed changelists.

Cannot approve their own reviews if disable_self_approve is enabled. For more information, see disable_self_approve.

Project members

Can change state to:

  • Needs review

  • Needs revision

Can attach committed changelists.

Cannot approve, reject, or archive reviews.

Other users

None

Cannot change review states.

All roles

Can start a review.

Cannot change state if it’s not in their allowed states (for example, can’t change from Rejected).

Additional notes

  • Moderators can prevent automatic approvals. For more information about automatically approving reviews using workflow rules see Workflow rules.

  • By default, if a review spans multiple branches with different moderators, only one moderator from any branch needs to approve it. You can change this (via a global setting) to require one moderator per branch. If a moderator belongs to multiple branches, one approval counts for each. For instructions on how to configure moderator behavior, see Moderator behavior when a review spans multiple branches.

To delete a moderator, click the delete icon against their name.

Default reviewers

User and group default reviewers can be set for individual projects and project branches. Each time a new review is created in the project or project branch, the default reviewers will be added to the review. See projects and project branches for adding default reviewers.

Default reviewers for reviews in multiple projects or branches:

When a review belongs to more than one project or branch:

  • The default reviewers from all the related projects and branches are combined and added to the review.

  • If a reviewer has different vote requirements in different places, the strictest setting is used.

For example:

  • In Project-A, Reviewer X is optional.

  • In Project-B, Reviewer X is optional.

  • In the project branch, Branch-b, Reviewer X is required.

As a result, Reviewer X will be added as a required reviewer on the review.

Mentioning default reviewers

If users or groups are @mentioned in a new changelist description that includes #review, they will be added to the review as reviewers. If any of these reviewers are already specified as default reviewers they will not be added to the review again, the reviewer's most restrictive reviewer option is used for the review.

Retain default reviewers

By default, default reviewers can be removed from an individual review by using the edit reviewers button on the review display page. Individual projects and branches can be configured to prevent default reviewers from being removed from individual reviews. For instructions on how to enable Retain default reviewers for a project or branch, see project or project branch.

Retain default reviewers basics

  • Retained default reviewers can be added or removed by editing the project or project branch. Each time a review is updated in the project or branch, the list of default reviewers is checked.
    • Any new default reviewers are added to the review.
    • If a default reviewer has been removed from the project/branch, they will remain on the review. They are no longer a retained default reviewer and can be removed from the review if required.
    • If a review is updated and it is no longer associated with the project/branch, the default reviewers for that project/branch will remain on the review. They are no longer retained default reviewers and can be removed from the review if required.
  • A review is checked when:

  • Retained default reviewers cannot be removed from a review by editing reviewers in the review.
  • The retained default reviewer voting option cannot be reduced in a review by editing reviewers in the review.
  • Example: if a user is a Required reviewer, the voting option cannot be reduced to a less strict option such as Optional reviewer.

  • The retained default reviewer voting option can be made stricter for a review by editing reviewers in the review.
  • Example: if a group is an Optional reviewer, the voting option can be increased to a stricter option such as Required reviewer (one vote).

Reviews spanning multiple projects and branches

Related projects and branches

  • When a review spans related projects and branches and a user/group is a retained default reviewer in one but a standard default reviewer in the other, the branch voting option is used for the user/group reviewer in the review.
  • Example:

    • Review 5678: spans Project A, and Branch A-1.
    • Project A:
      •  User-X: Required reviewer
      • Retain default reviewers: Enabled.
        • Branch A-1: a child of Project A:
          • User-X: Optional reviewer
          • Retain default reviewers: Disabled.
    • Review:
      • User-X: Optional reviewer, not a retained default reviewer.
      • The project voting option is ignored and the branch voting option is used.

        There is no restriction on changing the default reviewer voting option.

        The default reviewer can be removed from the review.

    Unrelated projects and branches

    When an individual user/group default reviewer is retained for some of the projects and branches the review spans but not for others, the strictest voting option is used for a default reviewer on the review. The strictest retained default reviewer voting option is the minimum voting option for the user/group default reviewer in the review.

    Example:

    • Review 1234: spans Project A, Project C, and Branch F-1.
    • Project A:
      • Group-D: Optional reviewer.
      • Retain default reviewers: Enabled.
    • Project C:
      • Group-D: Required reviewer (all votes).
      • Retain default reviewers: Disabled.
    • Branch F-1: not related to Project A or Project C:
      • Group-D: Required reviewer (one Vote)
      • Retain default reviewer: Enabled.
    • Review:
      • Group-D: Required reviewer (All votes), retained default reviewer.
      • The strictest voting option is used for the default reviewer.

        You can edit the voting option on the review. The minimum voting option is the strictest of the retained reviewer voting options. In this case that is, Required reviewer (one vote).

        The reviewer cannot be removed from the review.