context: override workingctx.hex() to avoid a crash
authorMatt Harbison <matt_harbison@yahoo.com>
Sun, 14 Jun 2015 22:04:17 -0400
changeset 25590 183965a00c76
parent 25589 273d94255e1e
child 25591 f1d46075b13a
context: override workingctx.hex() to avoid a crash Since node is None for workingctx, it can't use the base class implementation of 'hex(self.node())'. It doesn't appear that there are any current callers of this, but there will be when archive supports 'wdir()'. My first thought was to use "{p1node}+", but that would cause headaches elsewhere [1]. We should probably fix up localrepository.__getitem__ to accept this hash for consistency, as a followup. This works, if the full hash is specified: @@ -480,7 +480,7 @@ return dirstate.dirstate(self.vfs, self.ui, self.root, validate) def __getitem__(self, changeid): - if changeid is None: + if changeid is None or changeid == 'ff' * 20: return context.workingctx(self) if isinstance(changeid, slice): return [context.changectx(self, i) That differs from null, where it will accept any number of 0s, as long as it isn't ambiguous. [1] https://www.selenic.com/pipermail/mercurial-devel/2015-June/071166.html
mercurial/context.py
--- a/mercurial/context.py	Mon Jun 15 16:50:31 2015 -0400
+++ b/mercurial/context.py	Sun Jun 14 22:04:17 2015 -0400
@@ -1334,6 +1334,9 @@
     def __contains__(self, key):
         return self._repo.dirstate[key] not in "?r"
 
+    def hex(self):
+        return "ff" * 20
+
     @propertycache
     def _parents(self):
         p = self._repo.dirstate.parents()