# HG changeset patch # User Mads Kiilerich # Date 1400530351 -7200 # Node ID 3de9f2c4900c58d196b74026f84e75cb619699be # Parent 5f2cc464e502a19312125b645dde5615d2d74416 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 -r 5f2cc464e502 -r 3de9f2c4900c hgext/convert/convcmd.py --- 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) diff -r 5f2cc464e502 -r 3de9f2c4900c tests/test-convert-hg-sink.t --- 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)