cleanup services-to-main.sh (#6372)

- remove -B from checkout, didn't work as expected
- all submodules are now using main, fallback to master no longer needed
- make using git pull optional (--pull)

Co-authored-by: Adrian Richter <adrian@intevation.de>
This commit is contained in:
peb-adr 2022-02-25 15:16:36 +01:00 committed by GitHub
parent acfb4554d2
commit a8f19e9901
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,42 +2,64 @@
set -e set -e
function get_upstream_branch { ME=$(basename "$0")
local BRANCH_NAME=main
local exists=`git show-ref refs/heads/$BRANCH_NAME`
if [[ -z $exists ]]; then
BRANCH_NAME=main BRANCH_NAME=main
fi; REMOTE_NAME=
echo "$BRANCH_NAME" OPT_PULL=
usage() {
echo "USAGE:"
echo " $ME [ --pull | -p ]"
echo
echo "By default $ME will fetch the latest upstream changes for every"
echo "service/submodule and directly checkout the upstream's $BRANCH_NAME branch."
echo "This will leave them in detached HEAD state."
echo "Use --pull to instead forward the local $BRANCH_NAME branch."
} }
function get_upstream_name { set_remote() {
git ls-remote --exit-code upstream &>/dev/null || { REMOTE_NAME=upstream
echo "origin" git ls-remote --exit-code "$REMOTE_NAME" &>/dev/null ||
return REMOTE_NAME=origin
}
echo "upstream"
} }
function pull_latest_commit { pull_latest_commit() {
local BRANCH_NAME=$(get_upstream_branch) if [ -z "$OPT_PULL" ]; then
local REMOTE_NAME=$(get_upstream_name) echo "git fetch $REMOTE_NAME && git checkout $REMOTE_NAME/$BRANCH_NAME ..."
git fetch "$REMOTE_NAME" &&
echo "git checkout $BRANCH_NAME && git pull $REMOTE_NAME $BRANCH_NAME ..." git checkout "$REMOTE_NAME/$BRANCH_NAME"
git checkout -B $BRANCH_NAME; else
git pull $REMOTE_NAME $BRANCH_NAME; echo "git checkout $BRANCH_NAME && git pull --ff-only $REMOTE_NAME $BRANCH_NAME ..."
git checkout "$BRANCH_NAME" &&
git pull --ff-only "$REMOTE_NAME" "$BRANCH_NAME" || {
echo "ERROR: make sure a local branch $BRANCH_NAME exists and can be fast-forwarded to $REMOTE_NAME"
exit 1
}
fi
} }
export -f pull_latest_commit while [ "$#" -gt 0 ]; do
export -f get_upstream_branch case "$1" in
export -f get_upstream_name -p | --pull)
OPT_PULL=1
shift
;;
*)
usage
exit 0
;;
esac
done
for mod in $(git submodule status | awk '{print $2}'); do for mod in $(git submodule status | awk '{print $2}'); do
( (
echo "" echo ""
echo "$mod" echo "$mod"
cd "$mod" cd "$mod"
pull_latest_commit "$mod"
set_remote
pull_latest_commit
) )
done done