comparison hgext3rd/topic/revset.py @ 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 95478db35f88
children 5e71952c8b4a
comparison
equal deleted inserted replaced
5598:d1f6cf85bfec 5602:e25394b6d021
83 args = revset.getargs(x, 1, 1, b'ngtip takes one argument') 83 args = revset.getargs(x, 1, 1, b'ngtip takes one argument')
84 # match a specific topic 84 # match a specific topic
85 branch = revset.getstring(args[0], b'ngtip requires a string') 85 branch = revset.getstring(args[0], b'ngtip requires a string')
86 if branch == b'.': 86 if branch == b'.':
87 branch = repo[b'.'].branch() 87 branch = repo[b'.'].branch()
88 return subset & revset.baseset(destination.ngtip(repo, branch)) 88 # list of length 1
89 revs = [repo[node].rev() for node in destination.ngtip(repo, branch)]
90 return subset & revset.baseset(revs)
89 91
90 @revsetpredicate(b'stack()') 92 @revsetpredicate(b'stack()')
91 def stackset(repo, subset, x): 93 def stackset(repo, subset, x):
92 """All relevant changes in the current topic, 94 """All relevant changes in the current topic,
93 95