view contrib/phab-refresh-stack.sh @ 50647:7c5edf6fbf01 stable

tests: check `pulled-delta-reuse-policy=forced` without general delta If general delta is not available, the amount of delta we can reuse at all will be more limited. We check that application still work and does not corrupt the repository.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 08 Jun 2023 01:07:00 +0200
parents fba2d7fab11e
children
line wrap: on
line source

#!/bin/bash
set -eu

if [[ "$PHABRICATOR_TOKEN" == "NO-PHAB" ]]; then
    echo 'Skipping Phabricator Step' >&2
    exit 0
fi

revision_in_stack=`hg log \
    --rev '.#stack and ::. and topic()' \
    -T '\nONE-REV\n' \
    | grep 'ONE-REV' | wc -l`
revision_on_phab=`hg log \
    --rev '.#stack and ::. and topic() and desc("re:\nDifferential Revision: [^\n]+D\d+$")'\
    -T '\nONE-REV\n' \
    | grep 'ONE-REV' | wc -l`

if [[ $revision_in_stack -eq 0 ]]; then
    echo "stack is empty" >&2
    exit 0
fi

if [[ $revision_on_phab -eq 0 ]]; then
    echo "no tracked diff in this stack" >&2
    exit 0
fi

if [[ $revision_on_phab -lt $revision_in_stack ]]; then
    echo "not all stack changesets (${revision_in_stack}) have matching Phabricator Diff (${revision_on_phab})" >&2
    exit 2
fi

if [[ "$PHABRICATOR_TOKEN" == "" ]]; then
    echo 'missing $PHABRICATOR_TOKEN variable' >&2
    echo '(use PHABRICATOR_TOKEN="NO-PHAB" to disable this step)' >&2
    exit 2
fi

hg \
--config extensions.phabricator= \
--config phabricator.url=https://phab.mercurial-scm.org/ \
--config phabricator.callsign=HG \
--config auth.phabricator.schemes=https \
--config auth.phabricator.prefix=phab.mercurial-scm.org \
--config auth.phabricator.phabtoken=$PHABRICATOR_TOKEN \
phabsend --rev '.#stack and ::. and topic()' \
"$@"