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.
--- a/hgext/convert/convcmd.py Mon May 19 22:12:30 2014 +0200
+++ b/hgext/convert/convcmd.py Mon May 19 22:12:31 2014 +0200
@@ -173,8 +173,12 @@
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)
--- a/tests/test-convert-hg-sink.t Mon May 19 22:12:30 2014 +0200
+++ b/tests/test-convert-hg-sink.t Mon May 19 22:12:31 2014 +0200
@@ -526,8 +526,11 @@
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)