diff 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
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):