comparison mercurial/context.py @ 23017:dc25ed84bee8

changectx: issue a FilteredRepoLookupError when applicable We capture FilteredxxxError and issue a FilteredRepoLookupError instead with a sightly different messsge. The message will likely get more improvement in the future. error: filtered revision '4'
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 15 Oct 2014 20:37:44 -0700
parents b50ed6b9b513
children a4dd270a419c
comparison
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