This instance was upgraded to Heptapod 0.27.2 on 2021-12-08 at 22:00 UTC+1

Commit 5babfd35 authored by Sietse Brouwer's avatar Sietse Brouwer
Browse files

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)

--HG--
branch : stable
parent d1f6cf85bfec
......@@ -85,7 +85,9 @@ def ngtipset(repo, subset, x):
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):
......
......@@ -42,8 +42,10 @@ Simple linear case
|
o 0 () c_alpha
$ hg log -r 'ngtip(.)'
3 () c_delta
$ hg log -G -r 'ngtip(.)'
o 3 () c_delta
|
~
$ hg log -r 'default'
3 () c_delta
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment