comparison mercurial/localrepo.py @ 16378:c463f46fe050

localrepo: lookup now goes through context
author Matt Mackall <mpm@selenic.com>
date Sun, 08 Apr 2012 12:38:10 -0500
parents 4417eb761ba8
children def789752b60
comparison
equal deleted inserted replaced
16377:f8ce254e514f 16378:c463f46fe050
591 if reachable: 591 if reachable:
592 bheads = [b for b in bheads if b not in reachable] 592 bheads = [b for b in bheads if b not in reachable]
593 partial[branch] = bheads 593 partial[branch] = bheads
594 594
595 def lookup(self, key): 595 def lookup(self, key):
596 if isinstance(key, int): 596 return self[key].node()
597 return self.changelog.node(key)
598 elif key == '.':
599 return self.dirstate.p1()
600 elif key == 'null':
601 return nullid
602 elif key == 'tip':
603 return self.changelog.tip()
604 n = self.changelog._match(key)
605 if n:
606 return n
607 if key in self._bookmarks:
608 return self._bookmarks[key]
609 if key in self.tags():
610 return self.tags()[key]
611 if key in self.branchtags():
612 return self.branchtags()[key]
613 n = self.changelog._partialmatch(key)
614 if n:
615 return n
616
617 # can't find key, check if it might have come from damaged dirstate
618 if key in self.dirstate.parents():
619 raise error.Abort(_("working directory has unknown parent '%s'!")
620 % short(key))
621 try:
622 if len(key) == 20:
623 key = hex(key)
624 except TypeError:
625 pass
626 raise error.RepoLookupError(_("unknown revision '%s'") % key)
627 597
628 def lookupbranch(self, key, remote=None): 598 def lookupbranch(self, key, remote=None):
629 repo = remote or self 599 repo = remote or self
630 if key in repo.branchmap(): 600 if key in repo.branchmap():
631 return key 601 return key