From 939cf321a7432fbdd49e1b09ba0081567ec5dacf Mon Sep 17 00:00:00 2001 From: Martin Bornhold Date: Sun, 23 Oct 2016 14:33:45 +0200 Subject: [PATCH] pr-shadow: Set reference in git shadow repositories on successful merge. #1055 --- rhodecode/lib/vcs/backends/git/repository.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rhodecode/lib/vcs/backends/git/repository.py b/rhodecode/lib/vcs/backends/git/repository.py index 7e4d4263..4c87cf4a 100644 --- a/rhodecode/lib/vcs/backends/git/repository.py +++ b/rhodecode/lib/vcs/backends/git/repository.py @@ -876,6 +876,16 @@ class GitRepository(BaseRepository): shadow_repo._local_merge(merge_message, merger_name, merger_email, [source_ref.commit_id]) merge_possible = True + + # Need to reload repo to invalidate the cache, or otherwise we + # cannot retrieve the merge commit. + shadow_repo = GitRepository(shadow_repository_path) + merge_commit_id = shadow_repo.branches[pr_branch] + + # Set a reference pointing to the merge commit. This reference may + # be used to easily identify the last successful merge commit in + # the shadow repository. + shadow_repo.set_refs('refs/heads/pr-merge', merge_commit_id) except RepositoryError as e: log.exception('Failure when doing local merge on git shadow repo') merge_possible = False @@ -887,10 +897,6 @@ class GitRepository(BaseRepository): pr_branch, self.path, target_ref.name, enable_hooks=True, rc_scm_data=self.config.get('rhodecode', 'RC_SCM_DATA')) merge_succeeded = True - # Need to reload repo to invalidate the cache, or otherwise we - # cannot retrieve the merge commit. - shadow_repo = GitRepository(shadow_repository_path) - merge_commit_id = shadow_repo.branches[pr_branch] except RepositoryError as e: log.exception( 'Failure when doing local push on git shadow repo')