This plugin provides simple-to-use submit rules, hence the name.
This plugin supports configuration inheritance, following a worst case scenario when this is possible. That is, children projects can't use weaker options that their parents.
The REST API provides a view of the configuration including inheritance. The PUT method only changes the current project's configuration.
The Copy Score Rules are handled by Core Gerrit.
This plugin exposes a REST API to configure the labels and simple rules. It is available via the following endpoints:
Anonymously: @URL@projects/ProjectName/simple-submit-rules
Authenticated: @URL@a/projects/ProjectName/simple-submit-rules
The authenticated endpoint uses the default Gerrit authentication and permissions systems.
The READ_CONFIG
permission is required to access the configuration.
The WRITE_CONFIG
permission is required to make changes to the configuration.
The project name in the URI must be urlencoded if it contains special characters like a slash. This follows the current conventions used in Gerrit.
This endpoint is available using two HTTP methods: GET
and PUT
.
The GET request serves a JSON response with the current settings. The scheme used in this response is the same used for the PUT request body, so it will only be described once.
{ "comments": CommentsRules, "labels": { "Verified": LabelDefinition, "Code-Review": LabelDefinition } }
The comments section defines the rules to apply to comments (can the change be submitted with unresolved comments, …). The labels section defines each label.
When reading labels on the API, the result includes both local and inherited labels. When the configuration is modified through the API, the plugin will check if there are local label configurations. If the request modifies an inherited label, it will be copied down so that it can be modified locally.
{ "block_if_unresolved_comments": boolean }
When block_if_unresolved_comments is set to true, a Change with unresolved comments CAN'T be submitted.
{ "function": LabelFunction, "ignore_self_approval": boolean, "copy_score_rules": CopyScoreRule[] }
The LabelFunction specifies the behavior to use for this label. It allows marking a label as mandatory, and defines if negative votes are blocking or not. The list of functions is defined under.
When ignore_self_approval is set, the change author can't vote to approve their own change.
The copy_scores list defines under what circumstances the votes (for this specific label) should be kept. The list of rules is defined below.
CopyScoreRule value is an enum value, encoded as a string.
Each rule defines a behavior when a change is updated.
The possible options are: copyMinScore
, copyMaxScore
, copyAllScoresIfNoChange
copyAllScoresIfNoCodeChange
, copyAllScoresOnMergeCommitFirstParentUpdate
, and copyAllScoresOnTrivialRebase
See the Labels documentation page for more information.
The LabelFunction is an enum value, encoded as a string.
Example: MaxWithBlock
, AnyWithBlock
...
See the Labels documentation page for more information.
The following is a list of configuration options that can be changed in gerrit.config. All configs have to be nested under plugin.@PLUGIN@:
This config will prevent users from changing the function in the label configuration that is referenced in the name to a matching value. However, the config does not effect existing labels that already have the forbidden value.
Example:
[plugin "simple-submit"] disallowedLabelFunctions-Code-Review = MaxNoBlock
This config will prevent users from changing adding referenced copy score rules in the label configuration that is referenced in the name to a matching value. However, the config does not effect existing labels that already have the forbidden value.
[plugin "simple-submit"] disallowedCopyScoreRules-Code-Review = copyMaxScore