# HG changeset patch # User Martin Bornhold # Date 2016-10-27 10:50:02 # Node ID 1f73dd90788d58a6289c7cfed9872a6135722619 # Parent 02683dd71706441ed1a1dca3505f6c8b44fdb943 vcs: Use more specific merge error reason (either target or source ref missing) 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 @@ -867,7 +867,7 @@ class GitRepository(BaseRepository): except RepositoryError: log.exception('Failure when doing local fetch on git shadow repo') return MergeResponse( - False, False, None, MergeFailureReason.MISSING_COMMIT) + False, False, None, MergeFailureReason.MISSING_SOURCE_REF) merge_ref = None merge_failure_reason = MergeFailureReason.NONE diff --git a/rhodecode/lib/vcs/backends/hg/repository.py b/rhodecode/lib/vcs/backends/hg/repository.py --- a/rhodecode/lib/vcs/backends/hg/repository.py +++ b/rhodecode/lib/vcs/backends/hg/repository.py @@ -673,11 +673,16 @@ class MercurialRepository(BaseRepository return MergeResponse( False, False, None, MergeFailureReason.TARGET_IS_NOT_HEAD) - if (target_ref.type == 'branch' and - len(self._heads(target_ref.name)) != 1): + try: + if (target_ref.type == 'branch' and + len(self._heads(target_ref.name)) != 1): + return MergeResponse( + False, False, None, + MergeFailureReason.HG_TARGET_HAS_MULTIPLE_HEADS) + except CommitDoesNotExistError as e: + log.exception('Failure when looking up branch heads on hg target') return MergeResponse( - False, False, None, - MergeFailureReason.HG_TARGET_HAS_MULTIPLE_HEADS) + False, False, None, MergeFailureReason.MISSING_TARGET_REF) shadow_repo = self._get_shadow_instance(shadow_repository_path) @@ -691,7 +696,7 @@ class MercurialRepository(BaseRepository except CommitDoesNotExistError: log.exception('Failure when doing local pull on hg shadow repo') return MergeResponse( - False, False, None, MergeFailureReason.MISSING_COMMIT) + False, False, None, MergeFailureReason.MISSING_SOURCE_REF) merge_ref = None merge_failure_reason = MergeFailureReason.NONE diff --git a/rhodecode/tests/vcs/test_repository.py b/rhodecode/tests/vcs/test_repository.py --- a/rhodecode/tests/vcs/test_repository.py +++ b/rhodecode/tests/vcs/test_repository.py @@ -401,10 +401,10 @@ class TestRepositoryMerge: assert merge_response == expected_merge_response - def test_merge_missing_commit(self, vcsbackend): + def test_merge_missing_source_reference(self, vcsbackend): self.prepare_for_success(vcsbackend) expected_merge_response = MergeResponse( - False, False, None, MergeFailureReason.MISSING_COMMIT) + False, False, None, MergeFailureReason.MISSING_SOURCE_REF) source_ref = Reference( self.source_ref.type, 'not_existing', self.source_ref.commit_id)