localrepo: provide workingctx by integer revision
authorYuya Nishihara <yuya@tcha.org>
Sat, 16 Aug 2014 13:25:45 +0900
changeset 25764 22049b565d57
parent 25763 60c791592aa7
child 25765 5e1b0739611c
localrepo: provide workingctx by integer revision This allows us to use the integer representation in revset. None doesn't work well while computing revset because revset heavily depends on and optimized for integer revisions. Still repo[wdirrev].rev() is None, which means the canonical form of the working-directory revision is None. This patch doesn't add the case for the wdirid because we can't handle short and ambiguous identifiers here. Perhaps, the wdirid will have to be handled in the changelog layer.
mercurial/localrepo.py
--- a/mercurial/localrepo.py	Sun Apr 12 21:52:02 2015 +0900
+++ b/mercurial/localrepo.py	Sat Aug 16 13:25:45 2014 +0900
@@ -4,7 +4,7 @@
 #
 # This software may be used and distributed according to the terms of the
 # GNU General Public License version 2 or any later version.
-from node import hex, nullid, short
+from node import hex, nullid, wdirrev, short
 from i18n import _
 import urllib
 import peer, changegroup, subrepo, pushkey, obsolete, repoview
@@ -479,7 +479,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 == wdirrev:
             return context.workingctx(self)
         if isinstance(changeid, slice):
             return [context.changectx(self, i)