diff options
author | Zuul <zuul@review.opendev.org> | 2022-04-13 16:10:03 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2022-04-13 16:10:03 +0000 |
commit | d6ace2cec617f77786fd72e847d6c4f00538834c (patch) | |
tree | a1731985e7e301d8ad71a2c2be976df3c847218d | |
parent | 467af580cd4293be5f22f6b6120b62d730d7e902 (diff) | |
parent | f991c3fdc616561beaf626ca01e6645bc88e54a9 (diff) | |
download | zuul-d6ace2cec617f77786fd72e847d6c4f00538834c.tar.gz |
Merge "Create remote ref when it does not exist"
-rw-r--r-- | tests/unit/test_merger_repo.py | 6 | ||||
-rw-r--r-- | zuul/merger/merger.py | 9 |
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( |