OpenSlides/services-to-master.sh
GabrielInTheWorld 9809eb029c Automatically checkout the latest commit for every submodule
Adds a new script "services-to-master.sh" and updates the Makefile
2021-12-02 15:17:14 +01:00

62 lines
1.7 KiB
Bash
Executable File

# !/bin/bash
function get_upstream_branch {
local SUBMODULE_NAME=$0
local MEDIA_SERVICE_NAME="openslides-media-service"
# We have to treat the media-service differently to the other services
# until its "main" branch is neither master nor main
if [ "$SUBMODULE_NAME" == "$MEDIA_SERVICE_NAME" ]; then
echo "openslides4-dev"
return
fi;
local BRANCH_NAME=master
local exists=`git show-ref refs/heads/$BRANCH_NAME`
if [[ -z $exists ]]; then
BRANCH_NAME=main
fi;
echo "$BRANCH_NAME"
}
function get_upstream_name {
{
# try
git ls-remote --exit-code upstream 2>/dev/null && echo "upstream"
} || {
# catch
echo "origin"
}
}
function pull_latest_commit {
local SUBMODULE_NAME=$0
echo "Pulling latest commit for: $SUBMODULE_NAME"
echo "$SUBMODULE_NAME: Checking which branch is the upstream branch"
local BRANCH_NAME=$(get_upstream_branch)
echo "$SUBMODULE_NAME: Upstream branch is $BRANCH_NAME"
git checkout $BRANCH_NAME;
local REMOTE_NAME=$(get_upstream_name)
git pull $REMOTE_NAME $BRANCH_NAME;
echo "$SUBMODULE_NAME: Successfully pulled latest commit"
}
export -f pull_latest_commit
export -f get_upstream_branch
export -f get_upstream_name
git submodule update --init
git submodule foreach -q --recursive "bash -c pull_latest_commit \$name"
echo "Successfully pulled latest commits for every submodule!"
# Old command, if we need to checkout another branch than master or main:
# git submodule foreach -q --recursive
# '
# git checkout $(git config -f $$toplevel/.gitmodules submodule.$$name.branch || echo master);
# git pull upstream $$(git config -f $$toplevel/.gitmodules submodule.$$name.branch || echo master)
# '