[PATCH 4 of 5] convert: only consider shamap revisions converted if they still exists
Mads Kiilerich
mads at kiilerich.com
Mon May 19 20:33:32 UTC 2014
# HG changeset patch
# User Mads Kiilerich <madski at unity3d.com>
# Date 1400530351 -7200
# Mon May 19 22:12:31 2014 +0200
# Node ID c28cc8a6bd6226f0588365d5ae8e3d8a42cfa063
# Parent 8b9f31e85407fef886a08b55be31665f02319fde
convert: only consider shamap revisions converted if they still exists
Rollback or strip could leave a Mercurial repo with a shamap with revisions no
longer in the repository.
To ensure reliable conversions we now check that the commit actually exists and
consider it non-existing if it doesn't exist.
diff --git a/hgext/convert/convcmd.py b/hgext/convert/convcmd.py
--- a/hgext/convert/convcmd.py
+++ b/hgext/convert/convcmd.py
@@ -173,8 +173,12 @@ class converter(object):
parents = {}
while visit:
n = visit.pop(0)
- if n in known or n in self.map:
+ if n in known:
continue
+ if n in self.map:
+ m = self.map[n]
+ if m == SKIPREV or self.dest.hascommitfrommap(m):
+ continue
known.add(n)
self.ui.progress(_('scanning'), len(known), unit=_('revisions'))
commit = self.cachecommit(n)
diff --git a/tests/test-convert-hg-sink.t b/tests/test-convert-hg-sink.t
--- a/tests/test-convert-hg-sink.t
+++ b/tests/test-convert-hg-sink.t
@@ -524,8 +524,11 @@ Conversion after rollback
scanning source...
sorting...
converting...
+ 0 extra f+a-only change
$ hg -R a log -G -T '{rev} {desc|firstline} ({files})\n'
+ o 3 extra f+a-only change (f)
+ |
o 2 x (f)
|
@ 1 a (f)
More information about the Mercurial-devel
mailing list