contrib/merge-test-compat.sh
branchstable
changeset 5081 17fac26833da
parent 5080 6db9e2350948
equal deleted inserted replaced
5080:6db9e2350948 5081:17fac26833da
     3 
     3 
     4 unset GREP_OPTIONS
     4 unset GREP_OPTIONS
     5 
     5 
     6 compatbranches=$(hg branches --quiet | grep 'mercurial-' | grep -v ':' | sort -n --reverse)
     6 compatbranches=$(hg branches --quiet | grep 'mercurial-' | grep -v ':' | sort -n --reverse)
     7 prev='stable'
     7 prev='stable'
       
     8 topic=${1:-'test-compat'}
     8 for branch in $compatbranches; do
     9 for branch in $compatbranches; do
     9     hg up "$branch"
    10     # Logic in the revsets below:
    10     hg merge "$prev"
    11     # 1. There is target topic on stable or compatibility branch: merge all
       
    12     # those commits, they are related to our work and need to pass tests on all
       
    13     # compatibility branches.
       
    14     # 2. There is no target topic: avoid any commits that have topic set, they
       
    15     # are definitely unrelated to what we're doing.
       
    16     # In other words, if you want to test certain commits, assign them all to
       
    17     # one topic and provide that topic as the first argument to this script.
       
    18     uptarget="first(max(branch('$branch') and topic('$topic')) or max(branch('$branch') and not topic()))"
       
    19     hg up -r "$uptarget"
       
    20     hg topic "$topic"
       
    21     mergetarget="first(max(branch('$prev') and topic('$topic')) or max(branch('$prev') and not topic()))"
       
    22     hg merge -r "$mergetarget"
    11     hg commit -m "test-compat: merge $prev into $branch"
    23     hg commit -m "test-compat: merge $prev into $branch"
    12     prev=$branch
    24     prev=$branch
    13 done
    25 done