contrib/merge-test-compat.sh
author Anton Shestakov <av6@dwimlabs.net>
Wed, 11 Mar 2020 15:55:36 +0700
changeset 5194 f478ac0a818f
parent 5081 17fac26833da
permissions -rwxr-xr-x
readme: copywrite the section about branch policy, wrap long lines
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