mercurial/context.py
changeset 23017 dc25ed84bee8
parent 23013 b50ed6b9b513
child 23045 a4dd270a419c
equal deleted inserted replaced
23016:2bd51e61c65e 23017:dc25ed84bee8
   398             if len(changeid) == 20:
   398             if len(changeid) == 20:
   399                 try:
   399                 try:
   400                     self._node = changeid
   400                     self._node = changeid
   401                     self._rev = repo.changelog.rev(changeid)
   401                     self._rev = repo.changelog.rev(changeid)
   402                     return
   402                     return
       
   403                 except error.FilteredRepoLookupError:
       
   404                     raise
   403                 except LookupError:
   405                 except LookupError:
   404                     pass
   406                     pass
   405 
   407 
   406             try:
   408             try:
   407                 r = int(changeid)
   409                 r = int(changeid)
   413                 if r < 0 or r >= l:
   415                 if r < 0 or r >= l:
   414                     raise ValueError
   416                     raise ValueError
   415                 self._rev = r
   417                 self._rev = r
   416                 self._node = repo.changelog.node(r)
   418                 self._node = repo.changelog.node(r)
   417                 return
   419                 return
       
   420             except error.FilteredIndexError:
       
   421                 raise
   418             except (ValueError, OverflowError, IndexError):
   422             except (ValueError, OverflowError, IndexError):
   419                 pass
   423                 pass
   420 
   424 
   421             if len(changeid) == 40:
   425             if len(changeid) == 40:
   422                 try:
   426                 try:
   423                     self._node = bin(changeid)
   427                     self._node = bin(changeid)
   424                     self._rev = repo.changelog.rev(self._node)
   428                     self._rev = repo.changelog.rev(self._node)
   425                     return
   429                     return
       
   430                 except error.FilteredLookupError:
       
   431                     raise
   426                 except (TypeError, LookupError):
   432                 except (TypeError, LookupError):
   427                     pass
   433                     pass
   428 
   434 
   429             if changeid in repo._bookmarks:
   435             if changeid in repo._bookmarks:
   430                 self._node = repo._bookmarks[changeid]
   436                 self._node = repo._bookmarks[changeid]
   436                 return
   442                 return
   437             try:
   443             try:
   438                 self._node = repo.branchtip(changeid)
   444                 self._node = repo.branchtip(changeid)
   439                 self._rev = repo.changelog.rev(self._node)
   445                 self._rev = repo.changelog.rev(self._node)
   440                 return
   446                 return
       
   447             except error.FilteredRepoLookupError:
       
   448                 raise
   441             except error.RepoLookupError:
   449             except error.RepoLookupError:
   442                 pass
   450                 pass
   443 
   451 
   444             self._node = repo.changelog._partialmatch(changeid)
   452             self._node = repo.unfiltered().changelog._partialmatch(changeid)
   445             if self._node is not None:
   453             if self._node is not None:
   446                 self._rev = repo.changelog.rev(self._node)
   454                 self._rev = repo.changelog.rev(self._node)
   447                 return
   455                 return
   448 
   456 
   449             # lookup failed
   457             # lookup failed
   457             try:
   465             try:
   458                 if len(changeid) == 20:
   466                 if len(changeid) == 20:
   459                     changeid = hex(changeid)
   467                     changeid = hex(changeid)
   460             except TypeError:
   468             except TypeError:
   461                 pass
   469                 pass
       
   470         except (error.FilteredIndexError, error.FilteredLookupError,
       
   471                 error.FilteredRepoLookupError):
       
   472             raise error.FilteredRepoLookupError(_("filtered revision '%s'")
       
   473                                                 % changeid)
   462         except IndexError:
   474         except IndexError:
   463             pass
   475             pass
   464         raise error.RepoLookupError(
   476         raise error.RepoLookupError(
   465             _("unknown revision '%s'") % changeid)
   477             _("unknown revision '%s'") % changeid)
   466 
   478