summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2022-04-13 16:10:03 +0000
committerGerrit Code Review <review@openstack.org>2022-04-13 16:10:03 +0000
commitd6ace2cec617f77786fd72e847d6c4f00538834c (patch)
treea1731985e7e301d8ad71a2c2be976df3c847218d
parent467af580cd4293be5f22f6b6120b62d730d7e902 (diff)
parentf991c3fdc616561beaf626ca01e6645bc88e54a9 (diff)
downloadzuul-d6ace2cec617f77786fd72e847d6c4f00538834c.tar.gz
Merge "Create remote ref when it does not exist"
-rw-r--r--tests/unit/test_merger_repo.py6
-rw-r--r--zuul/merger/merger.py9
2 files changed, 8 insertions, 7 deletions
diff --git a/tests/unit/test_merger_repo.py b/tests/unit/test_merger_repo.py
index 5cf308951..a996c407e 100644
--- a/tests/unit/test_merger_repo.py
+++ b/tests/unit/test_merger_repo.py
@@ -184,12 +184,14 @@ class TestMergerRepo(ZuulTestCase):
work_repo = Repo(parent_path, self.workspace_root,
'none@example.org', 'User Name', '0', '0')
work_repo.setRemoteRef('master', commit_sha)
- work_repo.setRemoteRef('invalid', commit_sha)
+ # missing remote ref would be created
+ work_repo.setRemoteRef('missing', commit_sha)
repo = git.Repo(self.workspace_root)
self.assertEqual(repo.remotes.origin.refs.master.commit.hexsha,
commit_sha)
- self.assertNotIn('invalid', repo.remotes.origin.refs)
+ self.assertEqual(repo.remotes.origin.refs.missing.commit.hexsha,
+ commit_sha)
def test_clone_timeout(self):
parent_path = os.path.join(self.upstream_root, 'org/project1')
diff --git a/zuul/merger/merger.py b/zuul/merger/merger.py
index c9810b3ce..9ef5be265 100644
--- a/zuul/merger/merger.py
+++ b/zuul/merger/merger.py
@@ -509,12 +509,11 @@ class Repo(object):
log = get_annotated_logger(self.log, zuul_event_id)
repo = self.createRepoObject(zuul_event_id)
try:
- origin_ref = repo.remotes.origin.refs[branch]
+ log.debug("Updating remote reference origin/%s to %s", branch, rev)
+ repo.remotes.origin.refs[branch].commit = rev
except IndexError:
- log.warning("No remote ref found for branch %s", branch)
- return
- log.debug("Updating remote reference %s to %s", origin_ref, rev)
- origin_ref.commit = rev
+ log.warning("No remote ref found for branch %s, creating", branch)
+ Repo._setRef(f"refs/remotes/origin/{branch}", str(rev), repo)
def deleteRef(self, path, repo=None, zuul_event_id=None):
ref_log = get_annotated_logger(