Mercurial > evolve
changeset 5602:e25394b6d021 stable
ngtip: fix TypeError: make revset from revs, not nodes (issue6405)
This commit does two things:
- Firstly, it tweaks the ngtip revset test to exercise the -G/--graph
flag. This successfully triggers the bug when it is present.
- Secondly, it changes the `ngtip` revset to return a revset made from
integer revs instead of node hash bytes. The test now passes.
Details: The TypeError was triggered by running
hg log -r 'ngtip("default")' --graph
in a repository with more than one changeset. The --graph tag caused the
flow of control to call `reachableroots2` with the changeset ID found by
the `ngtip` revset. Because the changeset ID was a node hash (bytes)
instead of a rev (int), reachableroots2 raised the following error:
TypeError: an integer is required (got type bytes)
author | Sietse Brouwer <sbbrouwer@gmail.com> |
---|---|
date | Wed, 07 Oct 2020 09:34:59 +0200 |
parents | d1f6cf85bfec |
children | 5e71952c8b4a |
files | hgext3rd/topic/revset.py tests/test-topic-dest.t |
diffstat | 2 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext3rd/topic/revset.py Mon Oct 12 12:09:39 2020 +0200 +++ b/hgext3rd/topic/revset.py Wed Oct 07 09:34:59 2020 +0200 @@ -85,7 +85,9 @@ branch = revset.getstring(args[0], b'ngtip requires a string') if branch == b'.': branch = repo[b'.'].branch() - return subset & revset.baseset(destination.ngtip(repo, branch)) + # list of length 1 + revs = [repo[node].rev() for node in destination.ngtip(repo, branch)] + return subset & revset.baseset(revs) @revsetpredicate(b'stack()') def stackset(repo, subset, x):