| # How to use |
| |
| ## Intro |
| |
| The `@PLUGIN@` plugin allows defining owners (individual accounts or groups) |
| of directories, sub-directories and files that require approval when changes |
| modify them. |
| |
| The rules defining which user/group needs to approve which file are specified |
| in the `OWNERS` file and are covered in the |
| [@PLUGIN@ configuration](config.html) guide. |
| |
| ## Context |
| |
| The owners plugin can be used in two different modes: |
| 1. With plugin-provided submit requirements. |
| 2. With user defined custom submit requirements. |
| |
| > **NOTE**: Previous to 3.6 it was also possible to use the plugin with Prolog rules, |
| > while this has not yet completely stopped working, the functionalities of Prolog |
| > rules are now strongly limited and only applied on a best effort basis. It's |
| > highly advised to completely remove them from your system as a matter of |
| > priority. |
| > To add, when using Prolog rules there are no UI features. |
| |
| > On top of providing significantly better and more predictable performances, |
| > using the plugin in either mode 1. or 2. provides extra capabilities like: |
| > - A REST-api that exposes the owners approval status with single file granularity. |
| > - Enhanced UI experience with much clearer explanation of who owns what files, |
| > as explained below. |
| |
| > **NOTE**: The owners plugin uses multiple subsystems of Gerrit for determining |
| > the status of the submit requirement predicates or Prolog functions. |
| > When running a Gerrit off-line reindex using the `java -jar $GERRIT_SITE/bin/gerrit.war reindex` |
| > command, the Gerrit daemon is not active and therefore the owners plugin will not |
| > be able to expose its predicates and functions. |
| > To perform a full reindexing of Gerrit projects using owners' submit requirements or |
| > Prolog rules with owners' functions, the changes need to be reindex online using |
| > the SSH command `gerrit index changes-in-project` command when Gerrit daemon is active. |
| |
| ## <a id="ownerStatus">Owner status on change page |
| |
| ### <a id="ownerStatus.submitRequirements">Owners status for submit requirements |
| |
| When either `has:approval_owners` predicate is used in a submit requirement or |
| [enableSubmitRequirement](config.html#owners.enableSubmitRequirement) is enabled for a |
| project or any of its parents and, if applicable, owners status is displayed in two ways: |
| |
| * As an icon prepending the submit requirement and as a text next to it |
| \ |
|  |
| |
| Which then displays more detail information in a tooltip when hovered over. |
| |
|  |
| |
| * Next to all owned files, even if they are owned by someone else, (when the |
| newest patchset is selected) |
| \ |
|  |
| |
| #### <a id="ownersStatus.submitRequirement.files">Per file owners statuses |
| |
| The @PLUGIN@ plugin also shows the owners statuses per file in the file list. |
| For each file, the owners status is shown as an icon. One can **hover over |
| the icon** to get additional information displayed as a tooltip. |
| |
| - **Needs Owners' Approval**\ |
| A file owner either has not voted or voted negatively or not with sufficient |
| score. |
| \ |
|  |
| |
| |
| > **Notes:** |
| > |
| > The dialog contains up to **5** first file owners returned by the |
| > @PLUGIN@ plugin's REST API. |
| > |
| > Apart from the owner's name, their votes (if cast) and |
| > `Copy owner's email to clipboard` button are shown. |
| > |
| > Hovering over the owner's name results in their details being displayed |
| |
| |
|  |
| |
| - **Approved by Owners**\ |
| A file owner has approved the change. |
| \ |
|  |
| |
| |
| > Note that again, apart from the owner's name, their vote and |
| > `Copy owner's email to clipboard` button are shown, and owner's details are |
| > displayed when one hovers over the name. |
| |
| ### <a id="ownerStatus.submitRule">Owners status for submit rule |
| |
| `OWNERS` file can still be evaluated (without a need for the Prolog |
| predicate being added to the project) by enabling the |
| [default submit requirements](config.html#owners.enableSubmitRequirement). |
| In this way, results of the `OWNERS` file evaluation are provided to |
| Gerrit's change through submit rule (as |
| [submit record](/Documentation/rest-api-changes.html#submit-record)) and, if |
| applicable, owners status is displayed: |
| |
| * As an icon prepending the `Code Review from owners` submit requirement |
| \ |
|  |
| |
| |
| > Note that when default submit requirements are enabled, owner's votes are |
| > displayed next to the `Code Review from owners` submit requirement instead |
| > of its status. It is a Gerrit's core representation of submit rule. |
| |
| * Next to all owned files (when the newest patchset is selected) |
| \ |
|  |
| |
| |
| > There is no difference in this aspect between modes. |
| |
| #### <a id="ownersStatus.submitRule.owners">`Code Review from owners` submit requirement |
| |
| The `Code Review from owners` (i.e. the |
| [default submit requirement](config.html#owners.enableSubmitRequirement)) submit |
| requirement provides general information if all owned files were approved |
| (requirement is satisfied). When hovered, a detailed description is shown |
| |
|  |
| |
| #### <a id="ownersStatus.submitRule.files">Per file owners statuses |
| |
| The owners status per file when [default submit |
| requirements](config.html#owners.enableSubmitRequirement) are enabled doesn't |
| differ from [submit requirements mode](#ownersStatus.submitRequirement.files). |
| |
| ### Files that are assigned to the current user based on the OWNERS |
| |
| When the current user is mentioned directly or indirectly via a group |
| ownership as the owner of one or more files, the change screen displays |
| an additional tab called _Owned Files_. |
| |
|  |
| |
| The tab indicates whether the current user has review duties based on the |
| icon displayed on the right side of the tab. If the icon is an orange |
| clock, the current user is required to review the files indicated in the |
| tab; otherwise, if the icon is a green tick, then the current user review |
| input is not strictly required for the change to be merged. |
| |
| The list of files included in the _Owned Files_ tab, a subset of the full |
| list displayed in the _Files_ tab, are the ones assigned to the |
| current user through the OWNERS file. |
| |
| > **NOTE**: When the `owners.config` has `owners.expandGroups = false` |
| > then the association between files and the current user may not be |
| > accurate or not available because of the lack of group expansion and |
| > account resolution service on the backend. In this case, the |
| > _Owned Files_ tab may be absent even if the current user is effectively |
| > owner of one or more files in the change. |