comparison mercurial/context.py @ 7367:ad0eb8762458

context: special-case changectx setup for integer changeid
author Dirkjan Ochtman <dirkjan@ochtman.nl>
date Thu, 13 Nov 2008 21:09:51 +0100
parents 9fe97eea5510
children 595ba2537d4f
comparison
equal deleted inserted replaced
7366:eb240755386d 7367:ad0eb8762458
15 def __init__(self, repo, changeid=''): 15 def __init__(self, repo, changeid=''):
16 """changeid is a revision number, node, or tag""" 16 """changeid is a revision number, node, or tag"""
17 if changeid == '': 17 if changeid == '':
18 changeid = '.' 18 changeid = '.'
19 self._repo = repo 19 self._repo = repo
20 self._node = self._repo.lookup(changeid) 20 if isinstance(changeid, (long, int)):
21 self._rev = self._repo.changelog.rev(self._node) 21 self._rev = changeid
22 self._node = self._repo.changelog.node(changeid)
23 else:
24 self._node = self._repo.lookup(changeid)
25 self._rev = self._repo.changelog.rev(self._node)
22 26
23 def __str__(self): 27 def __str__(self):
24 return short(self.node()) 28 return short(self.node())
25 29
26 def __int__(self): 30 def __int__(self):
57 elif name == '_manifestdelta': 61 elif name == '_manifestdelta':
58 md = self._repo.manifest.readdelta(self._changeset[0]) 62 md = self._repo.manifest.readdelta(self._changeset[0])
59 self._manifestdelta = md 63 self._manifestdelta = md
60 return self._manifestdelta 64 return self._manifestdelta
61 elif name == '_parents': 65 elif name == '_parents':
62 p = self._repo.changelog.parents(self._node) 66 p = self._repo.changelog.parentrevs(self._rev)
63 if p[1] == nullid: 67 if p[1] == nullrev:
64 p = p[:-1] 68 p = p[:-1]
65 self._parents = [changectx(self._repo, x) for x in p] 69 self._parents = [changectx(self._repo, x) for x in p]
66 return self._parents 70 return self._parents
67 else: 71 else:
68 raise AttributeError(name) 72 raise AttributeError(name)