Files
scylladb/scripts/refresh-submodules.sh
Pavel Emelyanov 87df37792c scripts: Detect remote branch to fetch submodules from
There's a script to automate fetching submodule changes. However, this
script alays fetches remote master branch, which's not always the case.
The correct branch can be detected by checking the current remote
tracking scylla branch which should coincide with the submodule one.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
Message-Id: <20220317085018.11529-1-xemul@scylladb.com>
2022-03-17 12:21:29 +02:00

39 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
#
# Refresh git submodules by fast-forward merging them to the tip of the
# master branch of their respective repositories and committing the
# update with a default commit message of "git submodule summary".
#
# Copyright (C) 2020-present ScyllaDB
#
# SPDX-License-Identifier: AGPL-3.0-or-later
#
set -euo pipefail
# The following is the default list of submodules to refresh. To only refreh
# some of them, pass the list of modules to refresh as arguments. For example,
# "scripts/refresh-submodules.sh seastar tools/java" only refreshes the
# two submodules seastar and tools/java.
submodules=(
seastar
tools/jmx
tools/java
tools/python3
)
REMOTE=$(git rev-parse --abbrev-ref --symbolic-full-name @{upstream})
BRANCH=${REMOTE##*/}
for submodule in "${@:-${submodules[@]}}"; do
GIT_DIR="$submodule/.git" git pull --ff-only origin ${BRANCH}
SUMMARY=$(git submodule summary $submodule)
if grep '^ *<' <<< "$SUMMARY"; then
echo "Non fast-forward changes detected! Fire three red flares from your flare pistol."
exit 1
fi
if [ ! -z "$SUMMARY" ]; then
git commit --edit -m "Update $submodule submodule" -m "$SUMMARY" $submodule
fi
done