Handle merge mode in repeated project configs

Set a project's merge-mode to the value that appears first in a
project definition.

Change-Id: Ife044f531470c019ad5ad830b883e70199ede071
This commit is contained in:
James E. Blair 2017-02-19 14:54:39 -08:00
parent f59f3cfa8a
commit 1312c4d66e
1 changed files with 9 additions and 3 deletions

View File

@ -406,10 +406,7 @@ class ProjectParser(object):
with configuration_exceptions('project', conf):
ProjectParser.getSchema(layout)(conf)
project = model.ProjectConfig(conf_list[0]['name'])
mode = conf_list[0].get('merge-mode', 'merge-resolve')
project.merge_mode = model.MERGER_MAP[mode]
# TODOv3(jeblair): deal with merge mode setting on multi branches
configs = []
for conf in conf_list:
# Make a copy since we modify this later via pop
@ -423,6 +420,15 @@ class ProjectParser(object):
configs.extend([layout.project_templates[name]
for name in conf_templates])
configs.append(project_template)
mode = conf.get('merge-mode')
if mode and project.merge_mode is None:
# Set the merge mode to the first one that we find and
# ignore subsequent settings.
project.merge_mode = model.MERGER_MAP[mode]
if project.merge_mode is None:
# If merge mode was not specified in any project stanza,
# set it to the default.
project.merge_mode = model.MERGER_MAP['merge-resolve']
for pipeline in layout.pipelines.values():
project_pipeline = model.ProjectPipelineConfig()
project_pipeline.job_tree = model.JobTree(None)