| 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.maxAutomergeVote |
| : Value to vote on a successful automerge. |
| |
| When the automerger succeeds in merging downstream, it will vote |
| maxAutomergeVote on the downstream change. The original change uploaded by |
| the user will have a vote of 0, so that it can be easily programatically |
| distinguished from the otheres. |
| |
| 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. |
| |
| 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} |
| ``` |
| |
| 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. |