diff --git a/tests/fixtures/zuul.conf b/tests/fixtures/zuul.conf index 916cddd951..6df15c0b0a 100644 --- a/tests/fixtures/zuul.conf +++ b/tests/fixtures/zuul.conf @@ -11,3 +11,4 @@ sshkey=none [zuul] layout_config=layout.yaml git_dir=/tmp/zuul-test/git +push_change_refs=true diff --git a/zuul/merger.py b/zuul/merger.py index 271934685b..aa640e5ca8 100644 --- a/zuul/merger.py +++ b/zuul/merger.py @@ -84,12 +84,13 @@ class Repo(object): class Merger(object): log = logging.getLogger("zuul.Merger") - def __init__(self, trigger, working_root): + def __init__(self, trigger, working_root, push_refs): self.trigger = trigger self.repos = {} self.working_root = working_root if not os.path.exists(working_root): os.makedirs(working_root) + self.push_refs = push_refs def addProject(self, project, url): try: @@ -145,19 +146,20 @@ class Merger(object): self.log.info("Unable to merge %s" % change) return False - # Push the results upstream to the zuul ref - for project, branches in projects.items(): - repo = self.getRepo(project) - for branch in branches: - ref = 'refs/zuul/' + branch + '/' + target_ref - try: - repo.push(ref, ref) - complete = self.trigger.waitForRefSha(project, ref) - except: - self.log.exception("Unable to push %s" % ref) - return False - if not complete: - self.log.error("Ref %s did not show up in repo" % ref) - return False + if self.push_refs: + # Push the results upstream to the zuul ref + for project, branches in projects.items(): + repo = self.getRepo(project) + for branch in branches: + ref = 'refs/zuul/' + branch + '/' + target_ref + try: + repo.push(ref, ref) + complete = self.trigger.waitForRefSha(project, ref) + except: + self.log.exception("Unable to push %s" % ref) + return False + if not complete: + self.log.error("Ref %s did not show up in repo" % ref) + return False return True diff --git a/zuul/scheduler.py b/zuul/scheduler.py index 4ef7feac97..3f0289ae01 100644 --- a/zuul/scheduler.py +++ b/zuul/scheduler.py @@ -163,7 +163,11 @@ class Scheduler(threading.Thread): merge_root = self.config.get('zuul', 'git_dir') else: merge_root = '/var/lib/zuul/git' - self.merger = merger.Merger(self.trigger, merge_root) + if self.config.has_option('zuul', 'push_change_refs'): + push_refs = self.config.getboolean('zuul', 'push_change_refs') + else: + push_refs = False + self.merger = merger.Merger(self.trigger, merge_root, push_refs) for project in self.projects.values(): url = self.trigger.getGitUrl(project) self.merger.addProject(project, url)