--- 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 @@
<subject-full-hex> <object-full-hex>\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 <sub> is a new version of <obj>"""
+ if sub == nullid:
+ sub = None
self._obssubrels.setdefault(sub, set()).add(obj)
self._obsobjrels.setdefault(obj, set()).add(sub)
try:
--- 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
+