contrib/check-compat-strings.sh
author Manuel Jacob <me@manueljacob.de>
Sat, 21 Mar 2020 20:36:41 +0100
changeset 5314 f12d2172a133
parent 5192 f5b366a31740
permissions -rwxr-xr-x
evolve: consider all obsolete ancestors when finding new parent for orphan Both the old and the new logic have in common that the orphan changeset is moved to the tipmost successor of one or more ancestors of the orphan changeset. The previous logic considered only the first non-pruned ancestor of the orphan changeset. The new logic considers all obsolete ancestors of the orphan changeset. The logic in _possibledestination() had to be changed to be consistent with the new logic.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5192
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     1
#!/usr/bin/env bash
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     2
set -euo pipefail
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     3
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     4
unset GREP_OPTIONS
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     5
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     6
# This script finds compatibility-related comments with a node hash specified
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     7
# in all files in a given directory (. by default) and looks up the hash in a
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     8
# repo (~/hg by default) to determine if each of the comments is correct and,
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
     9
# if not, it suggests the correct release. This can prevent accidentally
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    10
# removing a piece of code that was misattributed to a different (earlier)
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    11
# release of core hg.
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    12
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    13
# Usage: $0 WDIR HGREPO where WDIR is usually evolve/hgext3rd/ and HGREPO is
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    14
# the place with core Mercurial repo (not just checkout). Said repo has to be
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    15
# sufficiently up-to-date, otherwise this script may not work correctly.
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    16
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    17
workdir=${1:-'.'}
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    18
hgdir=${2:-~/hg}
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    19
grep -Ern 'hg <= [0-9.]+ \([0-9a-f+]+\)' "$workdir" | while read -r line; do
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    20
    bashre='hg <= ([0-9.]+) \(([0-9a-f+]+)\)'
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    21
    if [[ $line =~ $bashre ]]; then
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    22
        expected=${BASH_REMATCH[1]}
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    23
        revset=${BASH_REMATCH[2]}
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    24
        tagrevset="max(tag('re:^[0-9]\\.[0-9]$') - ($revset)::)"
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    25
        lastrel=$(HGPLAIN=1 hg --cwd "$hgdir" log -r "$tagrevset" -T '{tags}')
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    26
        if [[ "$lastrel" != "$expected" ]]; then
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    27
            echo "$line"
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    28
            echo "actual last major release without $revset is $lastrel"
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    29
            echo
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    30
        fi
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    31
    fi
f5b366a31740 contrib: add a script to check release in compat comments that have node hash
Anton Shestakov <av6@dwimlabs.net>
parents:
diff changeset
    32
done