# HG changeset patch # User Martin von Zweigbergk # Date 1423118448 28800 # Node ID 43061f96e40edbb841993197223ae6d1b42128a4 # Parent e0e6dd806b2335846ee4883eb86dceef4573c814 obsolete: pass only new markers to _checkinvalidmarkers() We will soon delay populating precursors until we have to. To prepare for that, make _checkinvalidmarkers() scan for a nullid precursor in the list of new markers instead of the (currently) cheaper 'if nullid in precursors' check. diff -r e0e6dd806b23 -r 43061f96e40e mercurial/obsolete.py --- a/mercurial/obsolete.py Tue Jan 20 22:01:37 2015 -0800 +++ b/mercurial/obsolete.py Wed Feb 04 22:40:48 2015 -0800 @@ -489,15 +489,16 @@ for p in parents: children.setdefault(p, set()).add(mark) -def _checkinvalidmarkers(obsstore): +def _checkinvalidmarkers(markers): """search for marker with invalid data and raise error if needed Exist as a separated function to allow the evolve extension for a more subtle handling. """ - if node.nullid in obsstore.precursors: - raise util.Abort(_('bad obsolescence marker detected: ' - 'invalid successors nullid')) + for mark in markers: + if node.nullid in mark[1]: + raise util.Abort(_('bad obsolescence marker detected: ' + 'invalid successors nullid')) class obsstore(object): """Store obsolete markers @@ -629,7 +630,7 @@ _addsuccessors(self.successors, markers) _addprecursors(self.precursors, markers) _addchildren(self.children, markers) - _checkinvalidmarkers(self) + _checkinvalidmarkers(markers) def relevantmarkers(self, nodes): """return a set of all obsolescence markers relevant to a set of nodes.