# HG changeset patch # User Frank Kingswood # Date 2013-07-26 13:44:13 # Node ID 7b815e38022ac303df93d2a0b3cf1b330e4ce30b # Parent 2fa303619b4d33b12465829bafa181ea2e0f2ab5 convert: handle changeset sorting errors without traceback (issue3961) diff --git a/hgext/convert/cvsps.py b/hgext/convert/cvsps.py --- a/hgext/convert/cvsps.py +++ b/hgext/convert/cvsps.py @@ -496,6 +496,7 @@ class changeset(object): .branchpoints- the branches that start at the current entry or empty ''' def __init__(self, **entries): + self.id = None self.synthetic = False self.__dict__.update(entries) @@ -604,7 +605,8 @@ def createchangeset(ui, log, fuzz=60, me # Sort changesets by date - def cscmp(l, r): + odd = set() + def cscmp(l, r, odd=odd): d = sum(l.date) - sum(r.date) if d: return d @@ -626,7 +628,8 @@ def createchangeset(ui, log, fuzz=60, me for e in r.entries: if le.get(e.rcs, None) == e.parent: - assert not d + if d: + odd.add((l, r)) d = -1 break @@ -769,6 +772,12 @@ def createchangeset(ui, log, fuzz=60, me for i, c in enumerate(changesets): c.id = i + 1 + if odd: + for l, r in odd: + if l.id is not None and r.id is not None: + ui.warn(_('changeset %d is both before and after %d\n') + % (l.id, r.id)) + ui.status(_('%d changeset entries\n') % len(changesets)) hook.hook(ui, None, "cvschangesets", True, changesets=changesets)