contrib/phab-refresh-stack.sh
author Arseniy Alekseyev <aalekseyev@janestreet.com>
Fri, 26 Apr 2024 19:10:35 +0100
changeset 51626 865efc020c33
parent 48697 fba2d7fab11e
permissions -rwxr-xr-x
dirstate: remove the python-side whitelist of allowed matchers This whitelist is too permissive because it allows matchers that contain disallowed ones deep inside, for example through `intersectionmatcher`. It is also too restrictive because it doesn't pass through some of the matchers we support, such as `patternmatcher`. It's also unnecessary because unsupported matchers raise `FallbackError` and we fall back anyway. Making this change makes more of the tests use rust code path, and therefore subtly change behavior. For example, rust status in largefiles repos seems to have strange behavior.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45990
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     1
#!/bin/bash
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     2
set -eu
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
     3
48697
fba2d7fab11e phabricator-refresh: add a magic value to skip it in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46044
diff changeset
     4
if [[ "$PHABRICATOR_TOKEN" == "NO-PHAB" ]]; then
fba2d7fab11e phabricator-refresh: add a magic value to skip it in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46044
diff changeset
     5
    echo 'Skipping Phabricator Step' >&2
fba2d7fab11e phabricator-refresh: add a magic value to skip it in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46044
diff changeset
     6
    exit 0
fba2d7fab11e phabricator-refresh: add a magic value to skip it in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46044
diff changeset
     7
fi
fba2d7fab11e phabricator-refresh: add a magic value to skip it in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46044
diff changeset
     8
46043
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
     9
revision_in_stack=`hg log \
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    10
    --rev '.#stack and ::. and topic()' \
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    11
    -T '\nONE-REV\n' \
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    12
    | grep 'ONE-REV' | wc -l`
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    13
revision_on_phab=`hg log \
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    14
    --rev '.#stack and ::. and topic() and desc("re:\nDifferential Revision: [^\n]+D\d+$")'\
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    15
    -T '\nONE-REV\n' \
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    16
    | grep 'ONE-REV' | wc -l`
45990
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    17
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    18
if [[ $revision_in_stack -eq 0 ]]; then
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    19
    echo "stack is empty" >&2
46016
372409eb5cd1 phab-refresh: do not error out when the stack is empty
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45990
diff changeset
    20
    exit 0
45990
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    21
fi
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    22
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    23
if [[ $revision_on_phab -eq 0 ]]; then
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    24
    echo "no tracked diff in this stack" >&2
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    25
    exit 0
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    26
fi
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    27
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    28
if [[ $revision_on_phab -lt $revision_in_stack ]]; then
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    29
    echo "not all stack changesets (${revision_in_stack}) have matching Phabricator Diff (${revision_on_phab})" >&2
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    30
    exit 2
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    31
fi
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    32
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    33
if [[ "$PHABRICATOR_TOKEN" == "" ]]; then
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    34
    echo 'missing $PHABRICATOR_TOKEN variable' >&2
48697
fba2d7fab11e phabricator-refresh: add a magic value to skip it in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46044
diff changeset
    35
    echo '(use PHABRICATOR_TOKEN="NO-PHAB" to disable this step)' >&2
45990
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    36
    exit 2
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    37
fi
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    38
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    39
hg \
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    40
--config extensions.phabricator= \
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    41
--config phabricator.url=https://phab.mercurial-scm.org/ \
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    42
--config phabricator.callsign=HG \
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    43
--config auth.phabricator.schemes=https \
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    44
--config auth.phabricator.prefix=phab.mercurial-scm.org \
5de27798d2af contrib: add a small script to refresh all diff in the current stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    45
--config auth.phabricator.phabtoken=$PHABRICATOR_TOKEN \
46043
024f90fc01b5 phab-refresh: do not pick draft changeset from the bare "default" branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46016
diff changeset
    46
phabsend --rev '.#stack and ::. and topic()' \
46044
9be5db6148fb phab-refresh: allow passing additional argument to the phabsend
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46043
diff changeset
    47
"$@"