# HG changeset patch # User Martin Bornhold # Date 2016-10-23 12:33:45 # Node ID 57a326c40f810883da71a442022b1dccf701eb49 # Parent 1703d7ca0809ffbd73b2946711518bf911746a02 pr-shadow: Set reference in git shadow repositories on successful merge. #1055 diff --git a/rhodecode/lib/vcs/backends/git/repository.py b/rhodecode/lib/vcs/backends/git/repository.py --- 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')