# HG changeset patch # User Patrick Mezard # Date 1203159333 -3600 # Node ID fddeeb00f8d1de08bf6576fb2598b081c0819342 # Parent 516d8ffede7c81c07b06f314eca9e9a25f5d96fd convert: improve cycles detection message diff -r 516d8ffede7c -r fddeeb00f8d1 hgext/convert/convcmd.py --- a/hgext/convert/convcmd.py Sat Feb 16 12:46:28 2008 +0100 +++ b/hgext/convert/convcmd.py Sat Feb 16 11:55:33 2008 +0100 @@ -18,6 +18,14 @@ from mercurial import hg, util from mercurial.i18n import _ +orig_encoding = 'ascii' + +def recode(s): + if isinstance(s, unicode): + return s.encode(orig_encoding, 'replace') + else: + return s.decode('utf-8').encode(orig_encoding, 'replace') + source_converters = [ ('cvs', convert_cvs), ('git', convert_git), @@ -156,7 +164,11 @@ for c in children.get(n, []): if c not in pendings: pendings[c] = [p for p in parents[c] if p not in self.map] - pendings[c].remove(n) + try: + pendings[c].remove(n) + except ValueError: + raise util.Abort(_('cycle detected between %s and %s') + % (recode(c), recode(n))) if not pendings[c]: # Parents are converted, node is eligible actives.insert(0, c) @@ -251,12 +263,6 @@ def convert(self): - def recode(s): - if isinstance(s, unicode): - return s.encode(orig_encoding, 'replace') - else: - return s.decode('utf-8').encode(orig_encoding, 'replace') - try: self.source.before() self.dest.before() @@ -307,8 +313,6 @@ self.source.after() self.map.close() -orig_encoding = 'ascii' - def convert(ui, src, dest=None, revmapfile=None, **opts): global orig_encoding orig_encoding = util._encoding