Document new project-specific label configuration
Change-Id: I43b368705dc89c5092c0698fe283c7b1920fff30
This commit is contained in:
@@ -93,7 +93,7 @@ is being employed, moving from only 'Anonymous Users' into this
|
|||||||
group is very easy. Caution should be taken when assigning any
|
group is very easy. Caution should be taken when assigning any
|
||||||
permissions to this group.
|
permissions to this group.
|
||||||
|
|
||||||
It is typical to assign `Code Review -1..+1` to this group,
|
It is typical to assign `Code-Review -1..+1` to this group,
|
||||||
allowing signed-in users to vote on a change, but not actually
|
allowing signed-in users to vote on a change, but not actually
|
||||||
cause it to become approved or rejected.
|
cause it to become approved or rejected.
|
||||||
|
|
||||||
@@ -145,16 +145,16 @@ through link:cmd-set-project-parent.html[gerrit set-project-parent].
|
|||||||
Per-project access control lists are also supported.
|
Per-project access control lists are also supported.
|
||||||
|
|
||||||
Users are permitted to use the maximum range granted to any of their
|
Users are permitted to use the maximum range granted to any of their
|
||||||
groups in an approval category. For example, a user is a member of
|
groups on a label. For example, a user is a member of `Foo Leads`, and
|
||||||
`Foo Leads`, and the following ACLs are granted on a project:
|
the following ACLs are granted on a project:
|
||||||
|
|
||||||
[options="header"]
|
[options="header"]
|
||||||
|=================================================
|
|===================================================
|
||||||
|Group |Reference Name |Category|Range
|
|Group |Reference Name |Label |Range
|
||||||
|Anonymous Users |refs/heads/*|Code Review|-1..+1
|
|Anonymous Users |refs/heads/* |Code-Review|-1..+1
|
||||||
|Registered Users|refs/heads/*|Code Review|-1..+2
|
|Registered Users|refs/heads/* |Code-Review|-1..+2
|
||||||
|Foo Leads |refs/heads/*|Code Review|-2..0
|
|Foo Leads |refs/heads/* |Code-Review|-2..0
|
||||||
|=================================================
|
|===================================================
|
||||||
|
|
||||||
Then the effective range permitted to be used by the user is
|
Then the effective range permitted to be used by the user is
|
||||||
`-2..+2`, as the user is a member of all three groups (see above
|
`-2..+2`, as the user is a member of all three groups (see above
|
||||||
@@ -195,10 +195,10 @@ on the project:
|
|||||||
|
|
||||||
[options="header"]
|
[options="header"]
|
||||||
|===============================================================
|
|===============================================================
|
||||||
|Group |Reference Name|Category |Range |Exclusive
|
|Group |Reference Name|Label |Range |Exclusive
|
||||||
|Registered Users |refs/heads/* |Code Review| -1..+1 |
|
|Registered Users |refs/heads/* |Code-Review| -1..+1 |
|
||||||
|Foo Leads |refs/heads/* |Code Review| -2..+2 |
|
|Foo Leads |refs/heads/* |Code-Review| -2..+2 |
|
||||||
|QA Leads |refs/heads/qa |Code Review| -2..+2 |
|
|QA Leads |refs/heads/qa |Code-Review| -2..+2 |
|
||||||
|===============================================================
|
|===============================================================
|
||||||
|
|
||||||
Then the effective range permitted to be used by the user is
|
Then the effective range permitted to be used by the user is
|
||||||
@@ -219,29 +219,29 @@ and the following ACLs are granted:
|
|||||||
|
|
||||||
[options="header"]
|
[options="header"]
|
||||||
|==============================================================
|
|==============================================================
|
||||||
|Group |Reference Name|Category |Range |Exclusive
|
|Group |Reference Name|Label |Range |Exclusive
|
||||||
|Registered Users|refs/heads/* |Code Review| -1..+1 |
|
|Registered Users|refs/heads/* |Code-Review| -1..+1 |
|
||||||
|Foo Leads |refs/heads/* |Code Review| -2..+2 |
|
|Foo Leads |refs/heads/* |Code-Review| -2..+2 |
|
||||||
|QA Leads |refs/heads/qa |Code Review| -2..+2 |X
|
|QA Leads |refs/heads/qa |Code-Review| -2..+2 |X
|
||||||
|==============================================================
|
|==============================================================
|
||||||
|
|
||||||
Then this user will not have `Code Review` rights on that change,
|
Then this user will not have `Code-Review` rights on that change,
|
||||||
since there is an exclusive access right in place for the
|
since there is an exclusive access right in place for the
|
||||||
`refs/heads/qa` branch. This allows locking down access for a
|
`refs/heads/qa` branch. This allows locking down access for a
|
||||||
particular branch to a limited set of users, bypassing inherited
|
particular branch to a limited set of users, bypassing inherited
|
||||||
rights and wildcards.
|
rights and wildcards.
|
||||||
|
|
||||||
In order to grant the ability to `Code Review` to the members of
|
In order to grant the ability to `Code-Review` to the members of
|
||||||
`Foo Leads`, in `refs/heads/qa` then the following access rights
|
`Foo Leads`, in `refs/heads/qa` then the following access rights
|
||||||
would be needed:
|
would be needed:
|
||||||
|
|
||||||
[options="header"]
|
[options="header"]
|
||||||
|==============================================================
|
|==============================================================
|
||||||
|Group |Reference Name|Category |Range |Exclusive
|
|Group |Reference Name|Category |Range |Exclusive
|
||||||
|Registered Users|refs/heads/* |Code Review| -1..+1 |
|
|Registered Users|refs/heads/* |Code-Review| -1..+1 |
|
||||||
|Foo Leads |refs/heads/* |Code Review| -2..+2 |
|
|Foo Leads |refs/heads/* |Code-Review| -2..+2 |
|
||||||
|QA Leads |refs/heads/qa |Code Review| -2..+2 |X
|
|QA Leads |refs/heads/qa |Code-Review| -2..+2 |X
|
||||||
|Foo Leads |refs/heads/qa |Code Review| -2..+2 |
|
|Foo Leads |refs/heads/qa |Code-Review| -2..+2 |
|
||||||
|==============================================================
|
|==============================================================
|
||||||
|
|
||||||
OpenID Authentication
|
OpenID Authentication
|
||||||
@@ -281,169 +281,24 @@ behavior is generally only useful on the `Read` category when
|
|||||||
granting 'DENY' within a specific project to deny a group access.
|
granting 'DENY' within a specific project to deny a group access.
|
||||||
|
|
||||||
|
|
||||||
[[access_category]]
|
[[access_labels]]
|
||||||
Access Categories
|
Review Labels
|
||||||
-----------------
|
-------------
|
||||||
|
|
||||||
Gerrit comes pre-configured with several default categories that
|
For every configured label `My-Name` in the project, there is a
|
||||||
can be granted to groups within projects, enabling functionality
|
corresponding permission `label-My-Name` with a range corresponding to
|
||||||
for that group's members.
|
the defined values.
|
||||||
|
|
||||||
|
Gerrit comes pre-configured with several default labels that can be
|
||||||
|
granted to groups within projects, enabling functionality for that
|
||||||
|
group's members. link:config-labels.html[Custom labels] may also be
|
||||||
|
defined globally or on a per-project basis.
|
||||||
|
|
||||||
With the release of the Gerrit 2.2.x series, the web GUI for ACL
|
With the release of the Gerrit 2.2.x series, the web GUI for ACL
|
||||||
configuration was rewritten from scratch. Use this
|
configuration was rewritten from scratch. Use this
|
||||||
<<conversion_table,table>> to better understand the access rights
|
<<conversion_table,table>> to better understand the access rights
|
||||||
conversions from the Gerrit 2.1.x to the Gerrit 2.2.x series.
|
conversions from the Gerrit 2.1.x to the Gerrit 2.2.x series.
|
||||||
|
|
||||||
|
|
||||||
[[category_label-Verified]]
|
|
||||||
Label: Verified
|
|
||||||
~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The verified category is one of two default categories that is
|
|
||||||
configured upon the creation of a Gerrit instance. It may have
|
|
||||||
any meaning the project desires. It was originally invented by
|
|
||||||
the Android Open Source Project to mean
|
|
||||||
'compiles, passes basic unit tests'.
|
|
||||||
|
|
||||||
The range of values is:
|
|
||||||
|
|
||||||
* -1 Fails
|
|
||||||
+
|
|
||||||
Tried to compile, but got a compile error, or tried to run tests,
|
|
||||||
but one or more tests did not pass. This value is valid
|
|
||||||
across all patch sets in the same change, i.e. the reviewer must
|
|
||||||
actively change his/her review to something else before the change
|
|
||||||
is submittable.
|
|
||||||
+
|
|
||||||
*Any -1 blocks submit.*
|
|
||||||
|
|
||||||
* 0 No score
|
|
||||||
+
|
|
||||||
Didn't try to perform the verification tasks.
|
|
||||||
|
|
||||||
* +1 Verified
|
|
||||||
+
|
|
||||||
Compiled (and ran tests) successfully.
|
|
||||||
+
|
|
||||||
*Any +1 enables submit.*
|
|
||||||
|
|
||||||
For a change to be submittable, the change must have a `+1 Verified`
|
|
||||||
in this category from at least one authorized user, and no `-1 Fails`
|
|
||||||
from an authorized user. Thus, `-1 Fails` can block a submit,
|
|
||||||
while `+1 Verified` enables a submit.
|
|
||||||
|
|
||||||
If a Gerrit installation does not wish to use this category in any
|
|
||||||
project, it can be deleted from the database:
|
|
||||||
|
|
||||||
====
|
|
||||||
DELETE FROM approval_categories WHERE category_id = 'VRIF';
|
|
||||||
DELETE FROM approval_category_values WHERE category_id = 'VRIF';
|
|
||||||
====
|
|
||||||
|
|
||||||
If a Gerrit installation wants to modify the description text
|
|
||||||
associated with these category values, the text can be updated
|
|
||||||
in the `name` column of the `category_id = 'VRIF'` rows in the
|
|
||||||
`approval_category_values` table.
|
|
||||||
|
|
||||||
Additional values could also be added to this category, to allow it
|
|
||||||
to behave more like `Code Review` (below). Insert -2 and +2 value
|
|
||||||
rows into the `approval_category_values` with `category_id` set to
|
|
||||||
`VRIF` to get the same behavior.
|
|
||||||
|
|
||||||
[NOTE]
|
|
||||||
A restart is required after making database changes.
|
|
||||||
See <<restart_changes,below>>.
|
|
||||||
|
|
||||||
[[category_label-Code-Review]]
|
|
||||||
Label: Code Review
|
|
||||||
~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
The code review category is the second of two default categories that
|
|
||||||
is configured upon the creation of a Gerrit instance. It may have
|
|
||||||
any meaning the project desires. It was originally invented by the
|
|
||||||
Android Open Source Project to mean 'I read the code and it seems
|
|
||||||
reasonably correct'.
|
|
||||||
|
|
||||||
The range of values is:
|
|
||||||
|
|
||||||
* -2 Do not submit
|
|
||||||
+
|
|
||||||
The code is so horribly incorrect/buggy/broken that it must not be
|
|
||||||
submitted to this project, or to this branch. This value is valid
|
|
||||||
across all patch sets in the same change, i.e. the reviewer must
|
|
||||||
actively change his/her review to something else before the change
|
|
||||||
is submittable.
|
|
||||||
+
|
|
||||||
*Any -2 blocks submit.*
|
|
||||||
|
|
||||||
* -1 I would prefer that you didn't submit this
|
|
||||||
+
|
|
||||||
The code doesn't look right, or could be done differently, but
|
|
||||||
the reviewer is willing to live with it as-is if another reviewer
|
|
||||||
accepts it, perhaps because it is better than what is currently in
|
|
||||||
the project. Often this is also used by contributors who don't like
|
|
||||||
the change, but also aren't responsible for the project long-term
|
|
||||||
and thus don't have final say on change submission.
|
|
||||||
+
|
|
||||||
Does not block submit.
|
|
||||||
|
|
||||||
* 0 No score
|
|
||||||
+
|
|
||||||
Didn't try to perform the code review task, or glanced over it but
|
|
||||||
don't have an informed opinion yet.
|
|
||||||
|
|
||||||
* +1 Looks good to me, but someone else must approve
|
|
||||||
+
|
|
||||||
The code looks right to this reviewer, but the reviewer doesn't
|
|
||||||
have access to the `+2` value for this category. Often this is
|
|
||||||
used by contributors to a project who were able to review the change
|
|
||||||
and like what it is doing, but don't have final approval over what
|
|
||||||
gets submitted.
|
|
||||||
|
|
||||||
* +2 Looks good to me, approved
|
|
||||||
+
|
|
||||||
Basically the same as `+1`, but for those who have final say over
|
|
||||||
how the project will develop.
|
|
||||||
+
|
|
||||||
*Any +2 enables submit.*
|
|
||||||
|
|
||||||
For a change to be submittable, the latest patch set must have a
|
|
||||||
`+2 Looks good to me, approved` in this category from at least one
|
|
||||||
authorized user, and no `-2 Do not submit` from an authorized user.
|
|
||||||
Thus `-2` on any patch set can block a submit, while `+2` on the
|
|
||||||
latest patch set can enable it.
|
|
||||||
|
|
||||||
If a Gerrit installation does not wish to use this category in any
|
|
||||||
project, it can be deleted from the database:
|
|
||||||
|
|
||||||
====
|
|
||||||
DELETE FROM approval_categories WHERE category_id = 'CRVW';
|
|
||||||
DELETE FROM approval_category_values WHERE category_id = 'CRVW';
|
|
||||||
====
|
|
||||||
|
|
||||||
If a Gerrit installation wants to modify the description text
|
|
||||||
associated with these category values, the text can be updated
|
|
||||||
in the `name` column of the `category_id = 'CRVW'` rows in the
|
|
||||||
`approval_category_values` table.
|
|
||||||
|
|
||||||
Additional values could be inserted into `approval_category_values`
|
|
||||||
to further extend the negative and positive range, but there is
|
|
||||||
likely little value in doing so as this only expands the middle
|
|
||||||
region. This category is a `MaxWithBlock` type, which means that
|
|
||||||
the lowest negative value if present blocks a submit, while the
|
|
||||||
highest positive value is required to enable submit.
|
|
||||||
|
|
||||||
[[function_MaxNoBlock]]
|
|
||||||
There is also a `MaxNoBlock` category which still requires the
|
|
||||||
highest positive value to submit, but the lowest negative value will
|
|
||||||
not block the change, and does not carry over between patch sets.
|
|
||||||
This level is mostly useful for automated code-reviews that may
|
|
||||||
have false-negatives that shouldn't block the change.
|
|
||||||
|
|
||||||
[NOTE]
|
|
||||||
A restart is required after making database changes.
|
|
||||||
See <<restart_changes,below>>.
|
|
||||||
|
|
||||||
[[category_abandon]]
|
[[category_abandon]]
|
||||||
Abandon
|
Abandon
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
@@ -782,9 +637,9 @@ Submitting a change causes it to be merged into the destination
|
|||||||
branch as soon as possible, making it a permanent part of the
|
branch as soon as possible, making it a permanent part of the
|
||||||
project's history.
|
project's history.
|
||||||
|
|
||||||
In order to submit, all approval categories (such as `Verified` and
|
In order to submit, all labels (such as `Verified` and `Code-Review`,
|
||||||
`Code Review`, above) must enable submit, and also must not block it.
|
above) must enable submit, and also must not block it. See above for
|
||||||
See above for details on each category.
|
details on each label.
|
||||||
|
|
||||||
|
|
||||||
[[category_view_drafts]]
|
[[category_view_drafts]]
|
||||||
@@ -833,86 +688,6 @@ can always edit the topic name (even without having the `Edit Topic Name`
|
|||||||
access right assigned).
|
access right assigned).
|
||||||
|
|
||||||
|
|
||||||
[[category_makeoneup]]
|
|
||||||
Your Category Here
|
|
||||||
~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
Gerrit administrators can also make up their own categories.
|
|
||||||
|
|
||||||
See above for descriptions of how <<category_verified,`Verified`>>
|
|
||||||
and <<category_review,`Code Review`>> work, and insert your own
|
|
||||||
category with `function_name = 'MaxWithBlock'` to get the same
|
|
||||||
behavior over your own range of values, in any category you desire.
|
|
||||||
|
|
||||||
Ensure `category_id` is unique within your `approval_categories`
|
|
||||||
table. The default values `VRIF` and `CVRF` used for the categories
|
|
||||||
described above are simply that, defaults, and have no special
|
|
||||||
meaning to Gerrit.
|
|
||||||
|
|
||||||
The `position` column of `approval_categories` controls which column
|
|
||||||
of the 'Approvals' table the category appears in, providing some
|
|
||||||
layout control to the administrator.
|
|
||||||
|
|
||||||
All `MaxWithBlock` categories must have at least one positive value
|
|
||||||
in the `approval_category_values` table, or else submit will never
|
|
||||||
be enabled.
|
|
||||||
|
|
||||||
To permit blocking submits, ensure a negative value is defined for
|
|
||||||
your new category. If you do not wish to have a blocking submit
|
|
||||||
level for your category, do not define values less than 0.
|
|
||||||
|
|
||||||
Keep in mind that category definitions are currently global to
|
|
||||||
the entire Gerrit instance, and affect all projects hosted on it.
|
|
||||||
Any change to a category definition affects everyone.
|
|
||||||
|
|
||||||
For example, to define a new 3-valued category that behaves exactly
|
|
||||||
like `Verified`, but has different names/labels:
|
|
||||||
|
|
||||||
====
|
|
||||||
INSERT INTO approval_categories
|
|
||||||
(name
|
|
||||||
,position
|
|
||||||
,function_name
|
|
||||||
,category_id)
|
|
||||||
VALUES
|
|
||||||
('Copyright Check'
|
|
||||||
,3
|
|
||||||
,'MaxWithBlock'
|
|
||||||
,'copy');
|
|
||||||
|
|
||||||
INSERT INTO approval_category_values
|
|
||||||
(category_id,value,name)
|
|
||||||
VALUES
|
|
||||||
('copy', -1, 'Do not have copyright');
|
|
||||||
|
|
||||||
INSERT INTO approval_category_values
|
|
||||||
(category_id,value,name)
|
|
||||||
VALUES
|
|
||||||
('copy', 0, 'No score');
|
|
||||||
|
|
||||||
INSERT INTO approval_category_values
|
|
||||||
(category_id,value,name)
|
|
||||||
VALUES
|
|
||||||
('copy', 1, 'Copyright clear');
|
|
||||||
====
|
|
||||||
|
|
||||||
The new column will appear at the end of the table (in position 3),
|
|
||||||
and `-1 Do not have copyright` will block submit, while `+1 Copyright
|
|
||||||
clear` is required to enable submit.
|
|
||||||
|
|
||||||
link:config-gerrit.html#commentlink[Comment link] processing is applied to the
|
|
||||||
text description of the approval categories (the `name` column). This can be
|
|
||||||
used to display HTML links in the approval category value descriptions.
|
|
||||||
|
|
||||||
[[restart_changes]]
|
|
||||||
[NOTE]
|
|
||||||
Restart the Gerrit web application and reload all browsers after
|
|
||||||
making any database changes to approval categories. Browsers are
|
|
||||||
sent the list of known categories when they first visit the site,
|
|
||||||
and don't notice changes until the page is closed and opened again,
|
|
||||||
or is reloaded.
|
|
||||||
|
|
||||||
|
|
||||||
Examples of typical roles in a project
|
Examples of typical roles in a project
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
|
|
||||||
@@ -932,9 +707,9 @@ any changes.
|
|||||||
|
|
||||||
Suggested access rights to grant:
|
Suggested access rights to grant:
|
||||||
|
|
||||||
* <<category_read,`Read`>> on 'refs/heads/\*' and 'refs/tags/*'
|
* xref:category_read[`Read`] on 'refs/heads/\*' and 'refs/tags/*'
|
||||||
* <<category_push,`Push`>> to 'refs/for/refs/heads/*'
|
* xref:category_push[`Push`] to 'refs/for/refs/heads/*'
|
||||||
* <<category_label-Code-Review,`Code review`>> with range '-1' to '+1' for 'refs/heads/*'
|
* link:config-labels.html#label_Code-Review[`Code-Review`] with range '-1' to '+1' for 'refs/heads/*'
|
||||||
|
|
||||||
|
|
||||||
[[examples_developer]]
|
[[examples_developer]]
|
||||||
@@ -956,13 +731,13 @@ exclusively.
|
|||||||
|
|
||||||
Suggested access rights to grant:
|
Suggested access rights to grant:
|
||||||
|
|
||||||
* <<category_read,`Read`>> on 'refs/heads/\*' and 'refs/tags/*'
|
* xref:category_read[`Read`] on 'refs/heads/\*' and 'refs/tags/*'
|
||||||
* <<category_push,`Push`>> to 'refs/for/refs/heads/*'
|
* xref:category_push[`Push`] to 'refs/for/refs/heads/*'
|
||||||
* <<category_push_merge,`Push merge commit`>> to 'refs/for/refs/heads/*'
|
* xref:category_push_merge[`Push merge commit`] to 'refs/for/refs/heads/*'
|
||||||
* <<category_forge_author,`Forge Author Identity`>> to 'refs/heads/*'
|
* xref:category_forge_author[`Forge Author Identity`] to 'refs/heads/*'
|
||||||
* <<category_label-Code-Review,`Label: Code review`>> with range '-2' to '+2' for 'refs/heads/*'
|
* link:config-labels.html#label_Code-Review[`Label: Code-Review`] with range '-2' to '+2' for 'refs/heads/*'
|
||||||
* <<category_label-Verified,`Label: Verify`>> with range '-1' to '+1' for 'refs/heads/*'
|
* link:config-labels.html#label_Verified[`Label: Verify`] with range '-1' to '+1' for 'refs/heads/*'
|
||||||
* <<category_submit,`Submit`>>
|
* xref:category_submit[`Submit`]
|
||||||
|
|
||||||
If the project is small or the developers are seasoned it might make
|
If the project is small or the developers are seasoned it might make
|
||||||
sense to give them the freedom to push commits directly to a branch.
|
sense to give them the freedom to push commits directly to a branch.
|
||||||
@@ -1012,14 +787,14 @@ and so the push right can be found under the optional section.
|
|||||||
|
|
||||||
Suggested access rights to grant, that won't block changes:
|
Suggested access rights to grant, that won't block changes:
|
||||||
|
|
||||||
* <<category_read,`Read`>> on 'refs/heads/\*' and 'refs/tags/*'
|
* xref:category_read[`Read`] on 'refs/heads/\*' and 'refs/tags/*'
|
||||||
* <<category_label-Code-Review,`Label: Code review`>> with range '-1' to '0' for 'refs/heads/*'
|
* link:config-labels.html#label_Code-Review[`Label: Code-Review`] with range '-1' to '0' for 'refs/heads/*'
|
||||||
* <<category_label-Verified,`Label: Verify`>> with range '0' to '+1' for 'refs/heads/*'
|
* link:config-labels.html#label_Verified[`Label: Verify`] with range '0' to '+1' for 'refs/heads/*'
|
||||||
|
|
||||||
Optional access rights to grant:
|
Optional access rights to grant:
|
||||||
|
|
||||||
* <<category_label-Code-Review,`Label: Code review`>> with range '-1' to '+1' for 'refs/heads/*'
|
* link:config-labels.html#label_Code-Review[`Label: Code-Review`] with range '-1' to '+1' for 'refs/heads/*'
|
||||||
* <<category_push,`Push`>> to 'refs/for/refs/heads/*'
|
* xref:category_push[`Push`] to 'refs/for/refs/heads/*'
|
||||||
|
|
||||||
|
|
||||||
[[examples_integrator]]
|
[[examples_integrator]]
|
||||||
@@ -1205,8 +980,8 @@ Conversion table from 2.1.x series to 2.2.x series
|
|||||||
[options="header"]
|
[options="header"]
|
||||||
|=================================================================================
|
|=================================================================================
|
||||||
|Gerrit 2.1.x |Gerrit 2.2.x
|
|Gerrit 2.1.x |Gerrit 2.2.x
|
||||||
|Code review |<<category_label-Code-Review,Label: Code review>>
|
|Code review |link:config-labels.html#label_Code-Review[Label: Code-Review]
|
||||||
|Verify |<<category_label-Verified,Label: Verify>>
|
|Verify |link:config-labels.html#label_Verified[Label: Verify]
|
||||||
|Forge Identity +1 |Forge <<category_forge_author,author>> identity
|
|Forge Identity +1 |Forge <<category_forge_author,author>> identity
|
||||||
|Forge Identity +2 |Forge <<category_forge_committer,committer>> & <<category_forge_author,author>> identity
|
|Forge Identity +2 |Forge <<category_forge_committer,committer>> & <<category_forge_author,author>> identity
|
||||||
|Forge Identity +3 |Forge <<category_forge_server,server>> & <<category_forge_committer,committer>> & <<category_forge_author,author>> identity
|
|Forge Identity +3 |Forge <<category_forge_server,server>> & <<category_forge_committer,committer>> & <<category_forge_author,author>> identity
|
||||||
|
@@ -127,7 +127,7 @@ inside the Gerrit server:
|
|||||||
$ ssh -p 29418 review.example.com gerrit review -m '"Build Successful"' c0ff33
|
$ ssh -p 29418 review.example.com gerrit review -m '"Build Successful"' c0ff33
|
||||||
=====
|
=====
|
||||||
|
|
||||||
Mark the unmerged commits both "Verified +1" and "Code Review +2" and
|
Mark the unmerged commits both "Verified +1" and "Code-Review +2" and
|
||||||
submit them for merging:
|
submit them for merging:
|
||||||
====
|
====
|
||||||
$ ssh -p 29418 review.example.com gerrit review \
|
$ ssh -p 29418 review.example.com gerrit review \
|
||||||
|
249
Documentation/config-labels.txt
Normal file
249
Documentation/config-labels.txt
Normal file
@@ -0,0 +1,249 @@
|
|||||||
|
Gerrit Code Review - Review Labels
|
||||||
|
==================================
|
||||||
|
|
||||||
|
As part of the code review process, reviewers score each change with
|
||||||
|
values for each label configured for the project. The label values that
|
||||||
|
a given user is allowed to set are defined according to the
|
||||||
|
link:access-control.html#access_labels[access controls]. Gerrit comes
|
||||||
|
pre-configured with several default labels that can be granted to groups
|
||||||
|
within projects, enabling functionality for that group's members.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_Verified]]
|
||||||
|
Label: Verified
|
||||||
|
---------------
|
||||||
|
|
||||||
|
The verified label is one of two default labels that is configured upon
|
||||||
|
the creation of a Gerrit instance. It may have any meaning the project
|
||||||
|
desires. It was originally invented by the Android Open Source Project
|
||||||
|
to mean 'compiles, passes basic unit tests'.
|
||||||
|
|
||||||
|
The range of values is:
|
||||||
|
|
||||||
|
* -1 Fails
|
||||||
|
+
|
||||||
|
Tried to compile, but got a compile error, or tried to run tests,
|
||||||
|
but one or more tests did not pass.
|
||||||
|
+
|
||||||
|
*Any -1 blocks submit.*
|
||||||
|
|
||||||
|
* 0 No score
|
||||||
|
+
|
||||||
|
Didn't try to perform the verification tasks.
|
||||||
|
|
||||||
|
* +1 Verified
|
||||||
|
+
|
||||||
|
Compiled (and ran tests) successfully.
|
||||||
|
+
|
||||||
|
*Any +1 enables submit.*
|
||||||
|
|
||||||
|
For a change to be submittable, the change must have a `+1 Verified`
|
||||||
|
in this label, and no `-1 Fails`. Thus, `-1 Fails` can block a submit,
|
||||||
|
while `+1 Verified` enables a submit.
|
||||||
|
|
||||||
|
If a Gerrit installation does not wish to use this label in any project,
|
||||||
|
the `[label "Verified"]` section can be deleted from `project.config` in
|
||||||
|
`All-Projects`.
|
||||||
|
|
||||||
|
If a Gerrit installation or project wants to modify the description text
|
||||||
|
associated with these label values, the text can be updated in the
|
||||||
|
`label.Verified.value` fields in `project.config`.
|
||||||
|
|
||||||
|
Additional values could also be added to this label, to allow it to
|
||||||
|
behave more like `Code-Review` (below). Add -2 and +2 entries to the
|
||||||
|
`label.Verified.value` fields in `project.config` to get the same
|
||||||
|
behavior.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_Code-Review]]
|
||||||
|
Label: Code-Review
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The code review label is the second of two default labels that is
|
||||||
|
configured upon the creation of a Gerrit instance. It may have any
|
||||||
|
meaning the project desires. It was originally invented by the Android
|
||||||
|
Open Source Project to mean 'I read the code and it seems reasonably
|
||||||
|
correct'.
|
||||||
|
|
||||||
|
The range of values is:
|
||||||
|
|
||||||
|
* -2 Do not submit
|
||||||
|
+
|
||||||
|
The code is so horribly incorrect/buggy/broken that it must not be
|
||||||
|
submitted to this project, or to this branch. This value is valid
|
||||||
|
across all patch sets in the same change, i.e. the reviewer must
|
||||||
|
actively change his/her review to something else before the change
|
||||||
|
is submittable.
|
||||||
|
+
|
||||||
|
*Any -2 blocks submit.*
|
||||||
|
|
||||||
|
* -1 I would prefer that you didn't submit this
|
||||||
|
+
|
||||||
|
The code doesn't look right, or could be done differently, but
|
||||||
|
the reviewer is willing to live with it as-is if another reviewer
|
||||||
|
accepts it, perhaps because it is better than what is currently in
|
||||||
|
the project. Often this is also used by contributors who don't like
|
||||||
|
the change, but also aren't responsible for the project long-term
|
||||||
|
and thus don't have final say on change submission.
|
||||||
|
+
|
||||||
|
Does not block submit.
|
||||||
|
|
||||||
|
* 0 No score
|
||||||
|
+
|
||||||
|
Didn't try to perform the code review task, or glanced over it but
|
||||||
|
don't have an informed opinion yet.
|
||||||
|
|
||||||
|
* +1 Looks good to me, but someone else must approve
|
||||||
|
+
|
||||||
|
The code looks right to this reviewer, but the reviewer doesn't
|
||||||
|
have access to the `+2` value for this category. Often this is
|
||||||
|
used by contributors to a project who were able to review the change
|
||||||
|
and like what it is doing, but don't have final approval over what
|
||||||
|
gets submitted.
|
||||||
|
|
||||||
|
* +2 Looks good to me, approved
|
||||||
|
+
|
||||||
|
Basically the same as `+1`, but for those who have final say over
|
||||||
|
how the project will develop.
|
||||||
|
+
|
||||||
|
*Any +2 enables submit.*
|
||||||
|
|
||||||
|
For a change to be submittable, the latest patch set must have a
|
||||||
|
`+2 Looks good to me, approved` in this category, and no
|
||||||
|
`-2 Do not submit`. Thus `-2` on any patch set can block a submit,
|
||||||
|
while `+2` on the latest patch set can enable it.
|
||||||
|
|
||||||
|
If a Gerrit installation does not wish to use this label in any project,
|
||||||
|
the `[label "Code-Review"]` section can be deleted from `project.config`
|
||||||
|
in `All-Projects`.
|
||||||
|
|
||||||
|
If a Gerrit installation or project wants to modify the description text
|
||||||
|
associated with these label values, the text can be updated in the
|
||||||
|
`label.Code-Review.value` fields in `project.config`.
|
||||||
|
|
||||||
|
Additional entries could be added to `label.Code-Review.value` to
|
||||||
|
further extend the negative and positive range, but there is likely
|
||||||
|
little value in doing so as this only expands the middle region. This
|
||||||
|
label is a `MaxWithBlock` type, which means that the lowest negative
|
||||||
|
value if present blocks a submit, while the highest positive value is
|
||||||
|
required to enable submit.
|
||||||
|
|
||||||
|
[[label_custom]]
|
||||||
|
Your Label Here
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Site administrators and project owners can also define their own labels.
|
||||||
|
|
||||||
|
See above for descriptions of how <<label_Verified,`Verified`>>
|
||||||
|
and <<label_Code-Review,`Code-Review`>> work, and add your own
|
||||||
|
label to `project.config` to get the same behavior over your own range
|
||||||
|
of values, for any label you desire.
|
||||||
|
|
||||||
|
Just like the built-in labels, users need to be given permissions to
|
||||||
|
vote on custom labels. Permissions can either be added by manually
|
||||||
|
editing project.config when adding the labels, or, once the labels are
|
||||||
|
added, permission categories for those labels will show up in the
|
||||||
|
permission editor web UI.
|
||||||
|
|
||||||
|
Labels may be added to any project's `project.config`; the default
|
||||||
|
labels are defined in `All-Projects`. Labels are inherited from parent
|
||||||
|
projects; a child project may add, override, or remove labels defined in
|
||||||
|
its parents. Overriding a label in a child project overrides all its
|
||||||
|
properties and values. To remove a label in a child project, add an
|
||||||
|
empty label with the same name as in the parent.
|
||||||
|
|
||||||
|
Labels are laid out in the order they are specified in project.config,
|
||||||
|
with inherited labels appearing first, providing some layout control to
|
||||||
|
the administrator.
|
||||||
|
|
||||||
|
[[label_name]]
|
||||||
|
`label.Label-Name`
|
||||||
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The name for a label, consisting only of alphanumeric characters and
|
||||||
|
`-`.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_value]]
|
||||||
|
`label.Label-Name.value`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
A multi-valued key whose values are of the form `"<#> Value description
|
||||||
|
text"`. The `<#>` may be any positive or negative number with an
|
||||||
|
optional leading `+`.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_abbreviatedName]]
|
||||||
|
`label.Label-Name.abbreviatedName`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
An abbreviated name for a label shown as a compact column header, for
|
||||||
|
example on project dashboards. Defaults to all the uppercase characters
|
||||||
|
in the label name, e.g. `Label-Name` is abbreviated by default as `LN`.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_functionName]]
|
||||||
|
`label.Label-Name.functionName`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The name of a function for evaluating multiple votes for a label. This
|
||||||
|
function is only applied if the default submit rule is used for a label.
|
||||||
|
If you write a link:prolog-cookbook.html#HowToWriteSubmitRules[custom
|
||||||
|
submit rule] (and do not call the default rule), the function name is
|
||||||
|
ignored and may be treated as optional.
|
||||||
|
|
||||||
|
Valid values are:
|
||||||
|
|
||||||
|
* `MaxWithBlock` (default)
|
||||||
|
+
|
||||||
|
The lowest possible negative value, if present, blocks a submit, while
|
||||||
|
the highest possible positive value is required to enable submit. There
|
||||||
|
must be at least one positive value, or else submit will never be
|
||||||
|
enabled. To permit blocking submits, ensure a negative value is defined.
|
||||||
|
|
||||||
|
* `MaxNoBlock`
|
||||||
|
+
|
||||||
|
The highest possible positive value is required to enable submit, but
|
||||||
|
the lowest possible negative value will not block the change.
|
||||||
|
|
||||||
|
* `NoBlock`/`NoOp`
|
||||||
|
+
|
||||||
|
The label is purely informational and values are not considered when
|
||||||
|
determining whether a change is submittable.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_copyMinScore]]
|
||||||
|
`label.Label-Name.copyMinScore`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If true, the lowest possible negative value for the label is copied
|
||||||
|
forward when a new patch set is uploaded.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_canOverride]]
|
||||||
|
`label.Label-Name.canOverride`
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If false, the label cannot be overridden by child projects. Any
|
||||||
|
configuration for this label in child projects will be ignored. Defaults
|
||||||
|
to true.
|
||||||
|
|
||||||
|
|
||||||
|
[[label_example]]
|
||||||
|
Example
|
||||||
|
~~~~~~~
|
||||||
|
|
||||||
|
To define a new 3-valued category that behaves exactly like `Verified`,
|
||||||
|
but has different names/labels:
|
||||||
|
|
||||||
|
====
|
||||||
|
[label "Copyright-Check"]
|
||||||
|
functionName = MaxWithBlock
|
||||||
|
value = -1 Do not have copyright
|
||||||
|
value = 0 No score
|
||||||
|
value = +1 Copyright clear
|
||||||
|
====
|
||||||
|
|
||||||
|
The new column will appear at the end of the table, and `-1 Do not have
|
||||||
|
copyright` will block submit, while `+1 Copyright clear` is required to
|
||||||
|
enable submit.
|
@@ -5,22 +5,12 @@ Aside from actually writing translations, there are some issues with
|
|||||||
the way the code produces output. Most of the UI should support
|
the way the code produces output. Most of the UI should support
|
||||||
right-to-left (RTL) languages.
|
right-to-left (RTL) languages.
|
||||||
|
|
||||||
|
Labels
|
||||||
|
------
|
||||||
|
|
||||||
ApprovalCategory
|
Labels and their values are defined in project.config by the Gerrit
|
||||||
----------------
|
administrator or project owners. Only a single translation of these
|
||||||
|
strings is supported.
|
||||||
The getName() function produces only a single translation of the
|
|
||||||
description string. This name is set by the Gerrit administrator,
|
|
||||||
which may cause problems if the site is translated into multiple
|
|
||||||
languages and different users want different translations.
|
|
||||||
|
|
||||||
ApprovalCategoryValue
|
|
||||||
---------------------
|
|
||||||
|
|
||||||
The getName() function produces only a single translation of the
|
|
||||||
description string. This name is set by the Gerrit administrator,
|
|
||||||
which may cause problems if the site is translated into multiple
|
|
||||||
languages and different users want different translations.
|
|
||||||
|
|
||||||
/Gerrit Gerrit.html
|
/Gerrit Gerrit.html
|
||||||
-------------------
|
-------------------
|
||||||
|
@@ -46,6 +46,7 @@ Configuration
|
|||||||
* link:config-mail.html[Mail Templates]
|
* link:config-mail.html[Mail Templates]
|
||||||
* link:config-cla.html[Contributor Agreements]
|
* link:config-cla.html[Contributor Agreements]
|
||||||
* link:config-validation.html[Commit Validation]
|
* link:config-validation.html[Commit Validation]
|
||||||
|
* link:config-labels.html[Review Labels]
|
||||||
|
|
||||||
Developer Documentation
|
Developer Documentation
|
||||||
-----------------------
|
-----------------------
|
||||||
|
@@ -377,7 +377,7 @@ able to post review scores as well as submitting the change by clicking
|
|||||||
a single button. If you choose just to publish comments at this point then
|
a single button. If you choose just to publish comments at this point then
|
||||||
the score will be stored but the change won't yet be accepted into the code
|
the score will be stored but the change won't yet be accepted into the code
|
||||||
base. In this case there will be a _Submit Patch Set X_ button on the
|
base. In this case there will be a _Submit Patch Set X_ button on the
|
||||||
main screen. Just as Code Review and Verify are different operations
|
main screen. Just as Code-Review and Verify are different operations
|
||||||
that can be done by different users, Submission is a third operation
|
that can be done by different users, Submission is a third operation
|
||||||
that can be limited down to another group of users.
|
that can be limited down to another group of users.
|
||||||
|
|
||||||
|
@@ -193,9 +193,9 @@ change that are already provided by Gerrit.
|
|||||||
Another aspect of the return result from the `submit_rule` predicate is that
|
Another aspect of the return result from the `submit_rule` predicate is that
|
||||||
Gerrit uses it to decide which set of labels to display on the change review
|
Gerrit uses it to decide which set of labels to display on the change review
|
||||||
screen for voting. If the return result contains label `'ABC'` and if the label
|
screen for voting. If the return result contains label `'ABC'` and if the label
|
||||||
`'ABC'` is one of the (global) voting categories then voting for the label
|
`'ABC'` is link:config-labels.html[defined for the project] then voting for the
|
||||||
`'ABC'` will be displayed. Otherwise, it is not displayed. Note that we don't
|
label `'ABC'` will be displayed. Otherwise, it is not displayed. Note that the
|
||||||
need a (global) voting category for each label contained in the result of
|
project doesn't need a defined label for each label contained in the result of
|
||||||
`submit_rule` predicate. For example, the decision whether `'Author-is-John-Doe'`
|
`submit_rule` predicate. For example, the decision whether `'Author-is-John-Doe'`
|
||||||
label is met will probably not be made by explicit voting but, instead, by
|
label is met will probably not be made by explicit voting but, instead, by
|
||||||
inspecting the facts about the change.
|
inspecting the facts about the change.
|
||||||
|
@@ -322,9 +322,7 @@ are the default labels provided out of the box.
|
|||||||
|
|
||||||
A label name is any of the following:
|
A label name is any of the following:
|
||||||
|
|
||||||
* The label name.
|
* The label name. Example: `label:Code-Review`.
|
||||||
|
|
||||||
* The internal short name. Example: `label:CRVW`, or `label:VRIF`.
|
|
||||||
|
|
||||||
* The one or two character abbreviation shown in the column header
|
* The one or two character abbreviation shown in the column header
|
||||||
of change list pages. Example: `label:R` or `label:V`.
|
of change list pages. Example: `label:R` or `label:V`.
|
||||||
|
@@ -46,6 +46,10 @@ Review UI
|
|||||||
|
|
||||||
* A change's commit message can be edited from the change screen.
|
* A change's commit message can be edited from the change screen.
|
||||||
|
|
||||||
|
* The patch set review screen can include radio buttons for custom
|
||||||
|
labels if enabled by
|
||||||
|
link:http://gerrit-documentation.googlecode.com/svn/Documentation/2.6/prolog-cookbook.html#_how_to_write_submit_rules[submit rules].
|
||||||
|
|
||||||
|
|
||||||
Access Controls
|
Access Controls
|
||||||
~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~
|
||||||
@@ -125,6 +129,15 @@ Email footers now include `Gerrit-HasComments: {Yes|No}`.
|
|||||||
* Comment notification emails are sent to project watchers.
|
* Comment notification emails are sent to project watchers.
|
||||||
* "Change Merged" emails include the diff output when `sendemail.includeDiff` is enabled.
|
* "Change Merged" emails include the diff output when `sendemail.includeDiff` is enabled.
|
||||||
|
|
||||||
|
Labels
|
||||||
|
~~~~~~
|
||||||
|
* Approval categories stored in the database have been replaced with labels
|
||||||
|
configured in `project.config`. Existing categories are migrated to
|
||||||
|
`project.config` in `All-Projects` as part of the schema upgrade; no user
|
||||||
|
action is required.
|
||||||
|
* Labels are no longer global; projects may define their own labels,
|
||||||
|
with inheritance.
|
||||||
|
|
||||||
Upgrades
|
Upgrades
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
* link:https://code.google.com/p/gerrit/issues/detail?id=1619[Issue 1619]:
|
* link:https://code.google.com/p/gerrit/issues/detail?id=1619[Issue 1619]:
|
||||||
|
Reference in New Issue
Block a user