387 try: |
387 try: |
388 if isinstance(changeid, int): |
388 if isinstance(changeid, int): |
389 self._node = repo.changelog.node(changeid) |
389 self._node = repo.changelog.node(changeid) |
390 self._rev = changeid |
390 self._rev = changeid |
391 return |
391 return |
392 if changeid == 'null': |
392 elif changeid == 'null': |
393 self._node = nullid |
393 self._node = nullid |
394 self._rev = nullrev |
394 self._rev = nullrev |
395 return |
395 return |
396 if changeid == 'tip': |
396 elif changeid == 'tip': |
397 self._node = repo.changelog.tip() |
397 self._node = repo.changelog.tip() |
398 self._rev = repo.changelog.rev(self._node) |
398 self._rev = repo.changelog.rev(self._node) |
399 return |
399 return |
400 if (changeid == '.' |
400 elif (changeid == '.' |
401 or repo.local() and changeid == repo.dirstate.p1()): |
401 or repo.local() and changeid == repo.dirstate.p1()): |
402 # this is a hack to delay/avoid loading obsmarkers |
402 # this is a hack to delay/avoid loading obsmarkers |
403 # when we know that '.' won't be hidden |
403 # when we know that '.' won't be hidden |
404 self._node = repo.dirstate.p1() |
404 self._node = repo.dirstate.p1() |
405 self._rev = repo.unfiltered().changelog.rev(self._node) |
405 self._rev = repo.unfiltered().changelog.rev(self._node) |
406 return |
406 return |
407 if len(changeid) == 20: |
407 elif len(changeid) == 20: |
408 try: |
408 try: |
409 self._node = changeid |
409 self._node = changeid |
410 self._rev = repo.changelog.rev(changeid) |
410 self._rev = repo.changelog.rev(changeid) |
411 return |
411 return |
412 except error.FilteredLookupError: |
412 except error.FilteredLookupError: |
419 if (repo.local() |
419 if (repo.local() |
420 and changeid in repo.unfiltered().dirstate.parents()): |
420 and changeid in repo.unfiltered().dirstate.parents()): |
421 msg = _("working directory has unknown parent '%s'!") |
421 msg = _("working directory has unknown parent '%s'!") |
422 raise error.Abort(msg % short(changeid)) |
422 raise error.Abort(msg % short(changeid)) |
423 |
423 |
424 if len(changeid) == 40: |
424 elif len(changeid) == 40: |
425 try: |
425 try: |
426 self._node = bin(changeid) |
426 self._node = bin(changeid) |
427 self._rev = repo.changelog.rev(self._node) |
427 self._rev = repo.changelog.rev(self._node) |
428 return |
428 return |
429 except error.FilteredLookupError: |
429 except error.FilteredLookupError: |