Mercurial > evolve
view contrib/merge-test-compat.sh @ 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 | 17fac26833da |
children |
line wrap: on
line source
#!/bin/bash set -euox pipefail unset GREP_OPTIONS compatbranches=$(hg branches --quiet | grep 'mercurial-' | grep -v ':' | sort -n --reverse) prev='stable' topic=${1:-'test-compat'} for branch in $compatbranches; do # Logic in the revsets below: # 1. There is target topic on stable or compatibility branch: merge all # those commits, they are related to our work and need to pass tests on all # compatibility branches. # 2. There is no target topic: avoid any commits that have topic set, they # are definitely unrelated to what we're doing. # In other words, if you want to test certain commits, assign them all to # one topic and provide that topic as the first argument to this script. uptarget="first(max(branch('$branch') and topic('$topic')) or max(branch('$branch') and not topic()))" hg up -r "$uptarget" hg topic "$topic" mergetarget="first(max(branch('$prev') and topic('$topic')) or max(branch('$prev') and not topic()))" hg merge -r "$mergetarget" hg commit -m "test-compat: merge $prev into $branch" prev=$branch done