git-hg-helper: gc: resurrect Mercurial repo revision checking

This commit is contained in:
Mark Nauwelaerts
2016-08-20 11:02:21 +02:00
parent a7ea76788c
commit 20e923cf91
2 changed files with 6 additions and 2 deletions

View File

@@ -373,6 +373,8 @@ class GcCommand(SubCommand):
usage = '%%(prog)s %s [options] <remote>...' % (self.subcommand)
p = argparse.ArgumentParser(usage=usage, \
formatter_class=argparse.RawDescriptionHelpFormatter)
p.add_argument('--check-hg', action='store_true',
help='also prune invalid hg revisions')
p.add_argument('-n', '--dry-run', action='store_true',
help='do not actually update any metadata files')
p.epilog = textwrap.dedent("""\
@@ -415,7 +417,7 @@ class GcCommand(SubCommand):
hgm = remotehg.Marks(os.path.join(hgpath, 'marks-hg'), None)
print "Loading git marks ..."
gm = GitMarks(os.path.join(hgpath, 'marks-git'))
repo = hg.repository(ui.ui(), hg_repos[remote])
repo = hg.repository(ui.ui(), hg_repos[remote]) if options.check_hg else None
# git-gc may have dropped unreachable commits
# (in particular due to multiple hg head cases)
# need to drop those so git-fast-export or git-fast-import does not complain
@@ -436,6 +438,8 @@ class GcCommand(SubCommand):
hg_rev_marks = {}
git_rev_marks = {}
for m in common_marks:
if repo and not hgm.rev_marks[m] in repo:
continue
hg_rev_marks[m] = hgm.rev_marks[m]
git_rev_marks[m] = gm.rev_marks[m]
# common marks will not not include any refs/notes/hg

View File

@@ -147,7 +147,7 @@ test_expect_success 'subcommand gc' '
git fetch origin &&
git reset --hard origin/master &&
git gc &&
git-hg-helper gc origin > output &&
git-hg-helper gc --check-hg origin > output &&
cat output &&
grep "hg marks" output &&
grep "git marks" output