|  | Automerger Configuration | 
|  | ====================== | 
|  |  | 
|  | The configuration of the automerger plugin is done on the project level in | 
|  | the `automerger.config` file of the project. | 
|  |  | 
|  | ``` | 
|  | [global] | 
|  | automergeLabel = Code-Review | 
|  | hostName = https://hostname.example.com | 
|  | conflictMessage = Merge conflict found on ${branch}\n\ | 
|  | " # Example of multiline conflict message" | 
|  | manifestProject = platform/manifest | 
|  | manifestFile = default.xml | 
|  | alwaysBlankMerge = .*SKIP ME ALWAYS.* | 
|  | blankMerge = .*RESTRICT AUTOMERGE.* | 
|  | blankMerge = .*SKIP UNLESS MERGEALL SET.* | 
|  | missingDownstreamsMessage = there is no ${missingDownstreams} | 
|  |  | 
|  | [automerger "branch1:branch2"] | 
|  | setProjects = some/project | 
|  | addProjects = some/other/project | 
|  | ignoreProjects = some/ignored/project | 
|  | mergeAll = True | 
|  | ignoreSourceManifest = False | 
|  | ``` | 
|  |  | 
|  | global.automergeLabel | 
|  | : Label to vote minAutomergeVote on when there is a merge conflict. | 
|  |  | 
|  | When the automerger detects a merge conflict from one branch to another, it | 
|  | will vote minAutomergeVote on this label. | 
|  |  | 
|  | global.minAutomergeVote | 
|  | : Value to vote on a failed automerge. | 
|  |  | 
|  | When the automerger detects a merge conflict from one branch to another, it | 
|  | will vote minAutomergeVote for the configured automergeLabel. | 
|  |  | 
|  | Will not vote if disableMinAutomergeVote is true. | 
|  |  | 
|  | global.disableMinAutomergeVote | 
|  | : Whether to vote on a failed automerge. | 
|  |  | 
|  | If true, will not vote minAutomergeVote on a failed downstream merge. | 
|  | Defaults to false. | 
|  |  | 
|  | global.hostName | 
|  | : Hostname to use in a custom conflict message. | 
|  |  | 
|  | The automerger will attempt to use the canonicalWebUrl to fill in the | 
|  | hostname. However, if it is unable to do so for whatever reason, it can be | 
|  | overriden using this field. | 
|  |  | 
|  | global.conflictMessage | 
|  | : Message to comment with the automergeLabel vote if there is a merge conflict. | 
|  |  | 
|  | When the automerger detects a merge conflict from one branch to another, it | 
|  | will vote -1 on the automergeLabel. The message on the vote can be custom | 
|  | configured to include: | 
|  |  | 
|  | - branch | 
|  | - revision | 
|  | - hostname | 
|  | - topic | 
|  | - conflict | 
|  |  | 
|  | For example, you could configure the automerger.config to include: | 
|  |  | 
|  | ``` | 
|  | conflictMessage = Conflict message ${conflict} found on branch ${branch} | 
|  | ``` | 
|  |  | 
|  | global.manifestProject | 
|  | : Project to look for a [repo manifest][1] in. | 
|  |  | 
|  | The automerger will attempt to look for the manifest project in this project. | 
|  |  | 
|  | global.manifestFile | 
|  | : File to look for a [repo manifest][1] in. | 
|  |  | 
|  | The automerger will attempt to look for a repo manifest in this file. | 
|  |  | 
|  | [1]: https://gerrit.googlesource.com/git-repo/ | 
|  |  | 
|  | global.blankMerge | 
|  | : Pattern for skipping changes. | 
|  |  | 
|  | If the automerger matches this regex in the subject of the change, it will | 
|  | merge with "-s ours" to all downstream branches, effectively skipping the | 
|  | change. | 
|  |  | 
|  | If mergeAll is set to True for a branch, however, it will merge downstream | 
|  | normally for that branch. | 
|  |  | 
|  | global.alwaysBlankMerge | 
|  | : Pattern for always skipping changes. | 
|  |  | 
|  | If the automerger matches this regex in the subject of the change, it will | 
|  | merge with "-s ours" to all downstream branches, effectively skipping the | 
|  | change. | 
|  |  | 
|  | Even if mergeAll is set to True for a branch, it will still merge with | 
|  | "-s ours". | 
|  |  | 
|  | global.missingDownstreamsMessage | 
|  | : Message to display when attempting to submit a change without downstreams. | 
|  |  | 
|  | If a change has downstream branches configured for a project, but those | 
|  | downstreams have not been uploaded for review or are abandoned, this message | 
|  | will display as an error message on submit. | 
|  |  | 
|  | The message can be custom configured to include the missing downstream | 
|  | branches. | 
|  |  | 
|  | For example, you could configure the automerger.config to include: | 
|  |  | 
|  | ``` | 
|  | missingDownstreamsMessage = Missing downstreams ${missingDownstreams} | 
|  | ``` | 
|  |  | 
|  | global.contextUserId | 
|  | : User ID to use for doing all automerger operations. | 
|  |  | 
|  | If set to a valid user ID, all automerger operations will be done using the | 
|  | credentials of this user ID instead of the credentials of the user doing the | 
|  | upstream operation. | 
|  |  | 
|  | automerger.branch1:branch2.setProjects | 
|  | : Projects to automerge for. | 
|  |  | 
|  | If setProjects is set, it overrides the default scope. | 
|  |  | 
|  | automerger.branch1:branch2.addProjects | 
|  | : Projects to add on top of the projects already in scope. | 
|  |  | 
|  | If setProjects is set, this will add projects on top of the setProjects. | 
|  | If setProjects is not set, this will add projects on top of the default scope. | 
|  |  | 
|  | automerger.branch1:branch2.ignoreProjects | 
|  | : Projects to ignore on top of the projects already in scope | 
|  |  | 
|  | If setProjects is set, this will ignore projects on top of the setProjects. | 
|  | If setProjects is not set, this will ignore projects on top of the default | 
|  | scope. | 
|  |  | 
|  | automerger.branch1:branch2.mergeAll | 
|  | : If this is true, the blankMerge regex will be ignored. | 
|  |  | 
|  | When mergeAll is true, the blankMerge regex will be ignored but the | 
|  | alwaysBlankMerge regex will still be honored. | 
|  |  | 
|  | automerger.branch1:branch2.ignoreSourceManifest | 
|  | : If this is true, the default scope will be modified. | 
|  |  | 
|  | The default scope normally includes the intersection of all projects in the | 
|  | manifest of branch1 whose revisions are branch1, and all projects in the | 
|  | manifest of branch2 whose revisions are branch2. | 
|  |  | 
|  | If ignoreSourceManifest is true, the scope will become all projects in the | 
|  | manifest of branch2 whose revisions are branch2. |