374 self._node = repo.changelog.node(changeid) |
374 self._node = repo.changelog.node(changeid) |
375 self._rev = changeid |
375 self._rev = changeid |
376 return |
376 return |
377 if isinstance(changeid, long): |
377 if isinstance(changeid, long): |
378 changeid = str(changeid) |
378 changeid = str(changeid) |
379 if changeid == '.': |
|
380 self._node = repo.dirstate.p1() |
|
381 self._rev = repo.changelog.rev(self._node) |
|
382 return |
|
383 if changeid == 'null': |
379 if changeid == 'null': |
384 self._node = nullid |
380 self._node = nullid |
385 self._rev = nullrev |
381 self._rev = nullrev |
386 return |
382 return |
387 if changeid == 'tip': |
383 if changeid == 'tip': |
388 self._node = repo.changelog.tip() |
384 self._node = repo.changelog.tip() |
389 self._rev = repo.changelog.rev(self._node) |
385 self._rev = repo.changelog.rev(self._node) |
|
386 return |
|
387 if changeid == '.' or changeid == repo.dirstate.p1(): |
|
388 # this is a hack to delay/avoid loading obsmarkers |
|
389 # when we know that '.' won't be hidden |
|
390 self._node = repo.dirstate.p1() |
|
391 self._rev = repo.unfiltered().changelog.rev(self._node) |
390 return |
392 return |
391 if len(changeid) == 20: |
393 if len(changeid) == 20: |
392 try: |
394 try: |
393 self._node = changeid |
395 self._node = changeid |
394 self._rev = repo.changelog.rev(changeid) |
396 self._rev = repo.changelog.rev(changeid) |