[PATCH 5 of 7] localrepo: map integer and hex wdir identifiers to workingctx
Yuya Nishihara
yuya at tcha.org
Sat Jun 3 10:39:29 EDT 2017
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1471599635 -32400
# Fri Aug 19 18:40:35 2016 +0900
# Node ID cee3aecb6c45796eb7a79b995c04dd83289bfd76
# Parent a516f6ea75b353f71a935063598ef7add5914db5
localrepo: map integer and hex wdir identifiers to workingctx
changectx.__init__() is slightly modified to take str(wdirrev) as a valid
integer revision (and raise WdirUnsupported exception.)
Test will be added by the next patch.
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -23,6 +23,7 @@ from .node import (
short,
wdirid,
wdirnodes,
+ wdirrev,
)
from . import (
encoding,
@@ -471,7 +472,7 @@ class changectx(basectx):
l = len(repo.changelog)
if r < 0:
r += l
- if r < 0 or r >= l:
+ if r < 0 or r >= l and r != wdirrev:
raise ValueError
self._rev = r
self._node = repo.changelog.node(r)
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -20,7 +20,6 @@ from .node import (
hex,
nullid,
short,
- wdirrev,
)
from . import (
bookmarks,
@@ -564,13 +563,17 @@ class localrepository(object):
return nullid
def __getitem__(self, changeid):
- if changeid is None or changeid == wdirrev:
+ if changeid is None:
return context.workingctx(self)
if isinstance(changeid, slice):
+ # wdirrev isn't contiguous so the slice shouldn't include it
return [context.changectx(self, i)
for i in xrange(*changeid.indices(len(self)))
if i not in self.changelog.filteredrevs]
- return context.changectx(self, changeid)
+ try:
+ return context.changectx(self, changeid)
+ except error.WdirUnsupported:
+ return context.workingctx(self)
def __contains__(self, changeid):
"""True if the given changeid exists
More information about the Mercurial-devel
mailing list