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 @@ -78,7 +78,7 @@ class MercurialRepository(BaseRepository # because sometimes we init the repos with config we need to meet # special requirements self.config = config if config else self.get_default_config( - default=[('extensions', 'largefiles', '1')]) + default=[('extensions', 'largefiles', '')]) self.with_wire = with_wire or {"cache": False} # default should not use cache self._init_repo(create, src_url, do_workspace_checkout) @@ -632,6 +632,7 @@ class MercurialRepository(BaseRepository Returns the commit id of the merge and a boolean indicating if the commit needs to be pushed. """ + source_ref_commit_id = source_ref.commit_id target_ref_commit_id = target_ref.commit_id @@ -755,6 +756,7 @@ class MercurialRepository(BaseRepository log.debug('Executing merge_repo with %s strategy, dry_run mode:%s', 'rebase' if use_rebase else 'merge', dry_run) + if target_ref.commit_id not in self._heads(): return MergeResponse( False, False, None, MergeFailureReason.TARGET_IS_NOT_HEAD, @@ -857,6 +859,8 @@ class MercurialRepository(BaseRepository needs_push = False except RepositoryError as e: log.exception('Failure when doing local merge on hg shadow repo') + metadata['unresolved_files'] = 'no unresolved files found' + if isinstance(e, UnresolvedFilesInRepo): all_conflicts = list(e.args[0]) max_conflicts = 20 diff --git a/rhodecode/tests/vcs/test_hg.py b/rhodecode/tests/vcs/test_hg.py --- a/rhodecode/tests/vcs/test_hg.py +++ b/rhodecode/tests/vcs/test_hg.py @@ -414,12 +414,12 @@ TODO: To be written... def test_local_merge(self, vcsbackend_hg): target_repo = vcsbackend_hg.create_repo(number_of_commits=1) source_repo = vcsbackend_hg.clone_repo(target_repo) - vcsbackend_hg.add_file(target_repo, 'README_MERGE1', 'Version 1') + vcsbackend_hg.add_file(target_repo, b'README_MERGE1', b'Version 1') target_repo = MercurialRepository(target_repo.path) target_rev = target_repo.branches['default'] target_ref = Reference( type='branch', name='default', commit_id=target_rev) - vcsbackend_hg.add_file(source_repo, 'README_MERGE2', 'Version 2') + vcsbackend_hg.add_file(source_repo, b'README_MERGE2', b'Version 2') source_repo = MercurialRepository(source_repo.path) source_rev = source_repo.branches['default'] source_ref = Reference( @@ -686,8 +686,8 @@ TODO: To be written... def test_merge_rebase_source_is_updated_bookmark(self, vcsbackend_hg): target_repo = vcsbackend_hg.create_repo(number_of_commits=1) source_repo = vcsbackend_hg.clone_repo(target_repo) - vcsbackend_hg.add_file(target_repo, 'README_MERGE1', 'Version 1') - vcsbackend_hg.add_file(source_repo, 'README_MERGE2', 'Version 2') + vcsbackend_hg.add_file(target_repo, b'README_MERGE1', b'Version 1') + vcsbackend_hg.add_file(source_repo, b'README_MERGE2', b'Version 2') imc = source_repo.in_memory_commit imc.add(FileNode(b'file_x', content=safe_bytes(source_repo.name))) @@ -698,7 +698,7 @@ TODO: To be written... target_commit = target_repo.get_commit() source_commit = source_repo.get_commit() - vcsbackend_hg.add_file(source_repo, 'LICENSE', 'LICENSE Info') + vcsbackend_hg.add_file(source_repo, b'LICENSE', b'LICENSE Info') default_branch = target_repo.DEFAULT_BRANCH_NAME bookmark_name = 'bookmark'