contrib/merge-test-compat.sh
author Anton Shestakov <av6@dwimlabs.net>
Mon, 27 Jan 2020 14:55:35 +0700
branchstable
changeset 5249 1bcfbcc934c1
parent 5081 17fac26833da
permissions -rwxr-xr-x
tests: allow an empty merge commit to have tests pass without too many changes Not the greatest fix, but this allows us to have the same test case for all versions of Mercurial. Hash of 29 changes because instead of both parents only one is set in hg 5.3.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3133
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     1
#!/bin/bash
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     2
set -euox pipefail
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     3
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     4
unset GREP_OPTIONS
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     5
5080
6db9e2350948 contrib: shellcheck merge-test-compat.sh
Anton Shestakov <av6@dwimlabs.net>
parents: 3133
diff changeset
     6
compatbranches=$(hg branches --quiet | grep 'mercurial-' | grep -v ':' | sort -n --reverse)
3133
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     7
prev='stable'
5081
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
     8
topic=${1:-'test-compat'}
3133
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     9
for branch in $compatbranches; do
5081
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    10
    # Logic in the revsets below:
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    11
    # 1. There is target topic on stable or compatibility branch: merge all
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    12
    # those commits, they are related to our work and need to pass tests on all
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    13
    # compatibility branches.
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    14
    # 2. There is no target topic: avoid any commits that have topic set, they
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    15
    # are definitely unrelated to what we're doing.
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    16
    # In other words, if you want to test certain commits, assign them all to
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    17
    # one topic and provide that topic as the first argument to this script.
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    18
    uptarget="first(max(branch('$branch') and topic('$topic')) or max(branch('$branch') and not topic()))"
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    19
    hg up -r "$uptarget"
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    20
    hg topic "$topic"
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    21
    mergetarget="first(max(branch('$prev') and topic('$topic')) or max(branch('$prev') and not topic()))"
17fac26833da contrib: make merge-test-compat.sh more topic-friendly
Anton Shestakov <av6@dwimlabs.net>
parents: 5080
diff changeset
    22
    hg merge -r "$mergetarget"
3133
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    23
    hg commit -m "test-compat: merge $prev into $branch"
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    24
    prev=$branch
13a4c35f7a0b util: add a small script to help with the merging of branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    25
done