Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13115160
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
View Options
diff --git a/contrib/source-control-tools/autopatch.sh b/contrib/source-control-tools/autopatch.sh
index 579b9ff31f..901cffb75d 100755
--- a/contrib/source-control-tools/autopatch.sh
+++ b/contrib/source-control-tools/autopatch.sh
@@ -1,102 +1,102 @@
#!/usr/bin/env bash
# Copyright (c) 2019 The Bitcoin developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
export LC_ALL=C.UTF-8
set -euxo pipefail
DEFAULT_PATCH_ARGS="--skip-dependencies"
DEFAULT_REMOTE="origin"
DEFAULT_BRANCH="master"
help_message() {
set +x
echo "Apply a patch from Phabricator cleanly on latest master."
echo ""
echo "Options:"
echo "-b, --branch The git branch to fetch and rebase onto. Default: '${DEFAULT_BRANCH}'"
echo "-h, --help Display this help message."
echo "-o, --remote The git remote to fetch latest from. Default: '${DEFAULT_REMOTE}'"
echo "-p, --patch-args Args to pass to 'arc patch'. Default: '${DEFAULT_PATCH_ARGS}'"
echo "-r, --revision The Differential revision ID used in Phabricator that you want to land. (ex: D1234)"
echo " This argument is required if --patch-args does not specify a revision or diff ID."
set -x
}
BRANCH="${DEFAULT_BRANCH}"
PATCH_ARGS="${DEFAULT_PATCH_ARGS}"
REMOTE="${DEFAULT_REMOTE}"
REVISION=""
# Parse command line arguments
while [[ $# -gt 0 ]]; do
case $1 in
-b|--branch)
BRANCH="$2"
shift # shift past argument
shift # shift past value
;;
-h|--help)
help_message
exit 0
shift # shift past argument
;;
-o|--remote)
REMOTE="$2"
shift # shift past argument
shift # shift past value
;;
-p|--patch-args)
PATCH_ARGS="$2"
shift # shift past argument
shift # shift past value
;;
-r|--revision)
REVISION="$2"
shift # shift past argument
shift # shift past value
;;
*)
echo "Unknown argument: $1"
help_message
exit 1
shift # shift past argument
;;
esac
done
PATCH_ARGS="${REVISION} ${PATCH_ARGS}"
# Make sure there are no unstaged changes, just in case this script is being run locally
if [ -n "$(git status --porcelain)" ]; then
echo "Error: The source tree has unexpected changes. Clean up any changes (try 'git stash') and try again."
exit 10
fi
# Fetch and checkout latest changes, bailing if the branch isn't an ancestor of the remote branch.
REMOTE_AND_BRANCH="${REMOTE}/${BRANCH}"
-git fetch "${REMOTE}" "${BRANCH}:${REMOTE_AND_BRANCH}"
+git fetch "${REMOTE}" "${BRANCH}"
git checkout "${BRANCH}"
git merge-base --is-ancestor "${BRANCH}" "${REMOTE_AND_BRANCH}" || {
echo "Error: Branch '${BRANCH}' is not an ancestor of '${REMOTE_AND_BRANCH}'"
exit 11
}
git pull "${REMOTE}" "${BRANCH}"
(
# If arc fails, there may be a dangling branch. Clean it up before exiting.
cleanup() {
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
git checkout "${BRANCH}"
git branch -D "${CURRENT_BRANCH}" || true
}
trap "cleanup" ERR
# Note: `: | arc ...` pipes an empty string to stdin incase arcanist prompts
# for user input. This fails and is treated as an error.
: | arc patch ${PATCH_ARGS}
)
git rebase "${BRANCH}"
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sun, Mar 2, 10:03 (1 d, 7 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5187286
Default Alt Text
(3 KB)
Attached To
rSTAGING Bitcoin ABC staging
Event Timeline
Log In to Comment