# HG changeset patch # User Pierre-Yves David # Date 1316022777 -7200 # Node ID 5d029a35825239647d4e57b82d808fb4fa2ceec6 # Parent 9906560f585e14c9eaad1831fe2b58b12cd8009a [obsolete] add kill support diff -r 9906560f585e -r 5d029a358252 hgext/obsolete.py --- a/hgext/obsolete.py Wed Sep 14 19:20:38 2011 +0200 +++ b/hgext/obsolete.py Wed Sep 14 19:52:57 2011 +0200 @@ -87,7 +87,7 @@ from mercurial import discovery from mercurial import error from mercurial import commands -from mercurial.node import hex, bin, short +from mercurial.node import hex, bin, short, nullid from mercurial.lock import release ### Patch changectx @@ -255,6 +255,8 @@ \n""" for sub, objs in obssubrels.iteritems(): for obj in objs: + if sub is None: + sub = nullid flike.write('%s %s\n' % (hex(sub), hex(obj))) def _obsdeserialise(flike): @@ -264,7 +266,10 @@ rels = {} for line in flike: subhex, objhex = line.split() - rels.setdefault(bin(subhex), set()).add(bin(objhex)) + subnode = bin(subhex) + if subnode == nullid: + subnode = None + rels.setdefault( subnode, set()).add(bin(objhex)) return rels def reposetup(ui, repo): @@ -291,6 +296,8 @@ def addobsolete(self, sub, obj): """Add a relation marking that node is a new version of """ + if sub == nullid: + sub = None self._obssubrels.setdefault(sub, set()).add(obj) self._obsobjrels.setdefault(obj, set()).add(sub) try: diff -r 9906560f585e -r 5d029a358252 tests/test-obsolete.t --- a/tests/test-obsolete.t Wed Sep 14 19:20:38 2011 +0200 +++ b/tests/test-obsolete.t Wed Sep 14 19:52:57 2011 +0200 @@ -265,10 +265,42 @@ $ hg up null 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ mkcommit toto # 8 + $ mkcommit toto # 9 created new head - $ hg debugobsolete 8 0 - 159dfc9fa5d3 try to obsolete immutable changeset 1f0dee641bb7 + $ hg id -n + 9 + $ hg debugobsolete 9 0 + 83b5778897ad try to obsolete immutable changeset 1f0dee641bb7 $ qlog -r 'obsolete()' 3 - 0d3f46688ccc +allow to just kill changeset + + $ qlog + 9 + - 83b5778897ad + 8 + - 159dfc9fa5d3 + 4 + - 725c380fe99b + 3 + - 0d3f46688ccc + 1 + - 7c3bad9141dc + 0 + - 1f0dee641bb7 + + $ hg debugobsolete null 9 + $ hg up null -q # to be not based on 9 anymore + $ qlog + 8 + - 159dfc9fa5d3 + 4 + - 725c380fe99b + 3 + - 0d3f46688ccc + 1 + - 7c3bad9141dc + 0 + - 1f0dee641bb7 +