Show More
@@ -376,92 +376,95 b' class changectx(basectx):' | |||||
376 | changeid = '.' |
|
376 | changeid = '.' | |
377 | self._repo = repo |
|
377 | self._repo = repo | |
378 |
|
378 | |||
379 | if isinstance(changeid, int): |
|
379 | try: | |
|
380 | if isinstance(changeid, int): | |||
|
381 | try: | |||
|
382 | self._node = repo.changelog.node(changeid) | |||
|
383 | except IndexError: | |||
|
384 | raise error.RepoLookupError( | |||
|
385 | _("unknown revision '%s'") % changeid) | |||
|
386 | self._rev = changeid | |||
|
387 | return | |||
|
388 | if isinstance(changeid, long): | |||
|
389 | changeid = str(changeid) | |||
|
390 | if changeid == '.': | |||
|
391 | self._node = repo.dirstate.p1() | |||
|
392 | self._rev = repo.changelog.rev(self._node) | |||
|
393 | return | |||
|
394 | if changeid == 'null': | |||
|
395 | self._node = nullid | |||
|
396 | self._rev = nullrev | |||
|
397 | return | |||
|
398 | if changeid == 'tip': | |||
|
399 | self._node = repo.changelog.tip() | |||
|
400 | self._rev = repo.changelog.rev(self._node) | |||
|
401 | return | |||
|
402 | if len(changeid) == 20: | |||
|
403 | try: | |||
|
404 | self._node = changeid | |||
|
405 | self._rev = repo.changelog.rev(changeid) | |||
|
406 | return | |||
|
407 | except LookupError: | |||
|
408 | pass | |||
|
409 | ||||
380 | try: |
|
410 | try: | |
381 |
|
|
411 | r = int(changeid) | |
382 | except IndexError: |
|
412 | if str(r) != changeid: | |
383 |
raise |
|
413 | raise ValueError | |
384 | _("unknown revision '%s'") % changeid) |
|
414 | l = len(repo.changelog) | |
385 | self._rev = changeid |
|
415 | if r < 0: | |
386 | return |
|
416 | r += l | |
387 | if isinstance(changeid, long): |
|
417 | if r < 0 or r >= l: | |
388 | changeid = str(changeid) |
|
418 | raise ValueError | |
389 | if changeid == '.': |
|
419 | self._rev = r | |
390 |
self._node = repo. |
|
420 | self._node = repo.changelog.node(r) | |
391 | self._rev = repo.changelog.rev(self._node) |
|
|||
392 | return |
|
|||
393 | if changeid == 'null': |
|
|||
394 | self._node = nullid |
|
|||
395 | self._rev = nullrev |
|
|||
396 | return |
|
|||
397 | if changeid == 'tip': |
|
|||
398 | self._node = repo.changelog.tip() |
|
|||
399 | self._rev = repo.changelog.rev(self._node) |
|
|||
400 | return |
|
|||
401 | if len(changeid) == 20: |
|
|||
402 | try: |
|
|||
403 | self._node = changeid |
|
|||
404 | self._rev = repo.changelog.rev(changeid) |
|
|||
405 | return |
|
421 | return | |
406 | except LookupError: |
|
422 | except (ValueError, OverflowError, IndexError): | |
407 | pass |
|
423 | pass | |
408 |
|
424 | |||
409 | try: |
|
425 | if len(changeid) == 40: | |
410 | r = int(changeid) |
|
426 | try: | |
411 |
|
|
427 | self._node = bin(changeid) | |
412 | raise ValueError |
|
428 | self._rev = repo.changelog.rev(self._node) | |
413 | l = len(repo.changelog) |
|
429 | return | |
414 | if r < 0: |
|
430 | except (TypeError, LookupError): | |
415 |
|
|
431 | pass | |
416 | if r < 0 or r >= l: |
|
|||
417 | raise ValueError |
|
|||
418 | self._rev = r |
|
|||
419 | self._node = repo.changelog.node(r) |
|
|||
420 | return |
|
|||
421 | except (ValueError, OverflowError, IndexError): |
|
|||
422 | pass |
|
|||
423 |
|
432 | |||
424 | if len(changeid) == 40: |
|
433 | if changeid in repo._bookmarks: | |
425 | try: |
|
434 | self._node = repo._bookmarks[changeid] | |
426 | self._node = bin(changeid) |
|
|||
427 | self._rev = repo.changelog.rev(self._node) |
|
435 | self._rev = repo.changelog.rev(self._node) | |
428 | return |
|
436 | return | |
429 | except (TypeError, LookupError): |
|
437 | if changeid in repo._tagscache.tags: | |
|
438 | self._node = repo._tagscache.tags[changeid] | |||
|
439 | self._rev = repo.changelog.rev(self._node) | |||
|
440 | return | |||
|
441 | try: | |||
|
442 | self._node = repo.branchtip(changeid) | |||
|
443 | self._rev = repo.changelog.rev(self._node) | |||
|
444 | return | |||
|
445 | except error.RepoLookupError: | |||
430 | pass |
|
446 | pass | |
431 |
|
447 | |||
432 | if changeid in repo._bookmarks: |
|
448 | self._node = repo.changelog._partialmatch(changeid) | |
433 | self._node = repo._bookmarks[changeid] |
|
449 | if self._node is not None: | |
434 | self._rev = repo.changelog.rev(self._node) |
|
450 | self._rev = repo.changelog.rev(self._node) | |
435 | return |
|
451 | return | |
436 | if changeid in repo._tagscache.tags: |
|
|||
437 | self._node = repo._tagscache.tags[changeid] |
|
|||
438 | self._rev = repo.changelog.rev(self._node) |
|
|||
439 | return |
|
|||
440 | try: |
|
|||
441 | self._node = repo.branchtip(changeid) |
|
|||
442 | self._rev = repo.changelog.rev(self._node) |
|
|||
443 | return |
|
|||
444 | except error.RepoLookupError: |
|
|||
445 | pass |
|
|||
446 |
|
452 | |||
447 | self._node = repo.changelog._partialmatch(changeid) |
|
453 | # lookup failed | |
448 | if self._node is not None: |
|
454 | # check if it might have come from damaged dirstate | |
449 | self._rev = repo.changelog.rev(self._node) |
|
455 | # | |
450 | return |
|
456 | # XXX we could avoid the unfiltered if we had a recognizable | |
451 |
|
457 | # exception for filtered changeset access | ||
452 | # lookup failed |
|
458 | if changeid in repo.unfiltered().dirstate.parents(): | |
453 | # check if it might have come from damaged dirstate |
|
459 | msg = _("working directory has unknown parent '%s'!") | |
454 | # |
|
460 | raise error.Abort(msg % short(changeid)) | |
455 | # XXX we could avoid the unfiltered if we had a recognizable exception |
|
461 | try: | |
456 | # for filtered changeset access |
|
462 | if len(changeid) == 20: | |
457 | if changeid in repo.unfiltered().dirstate.parents(): |
|
463 | changeid = hex(changeid) | |
458 | raise error.Abort(_("working directory has unknown parent '%s'!") |
|
464 | except TypeError: | |
459 | % short(changeid)) |
|
465 | pass | |
460 | try: |
|
466 | except Exception: | |
461 | if len(changeid) == 20: |
|
467 | raise | |
462 | changeid = hex(changeid) |
|
|||
463 | except TypeError: |
|
|||
464 | pass |
|
|||
465 | raise error.RepoLookupError( |
|
468 | raise error.RepoLookupError( | |
466 | _("unknown revision '%s'") % changeid) |
|
469 | _("unknown revision '%s'") % changeid) | |
467 |
|
470 |
General Comments 0
You need to be logged in to leave comments.
Login now