Automatically checkout the latest commit for every submodule
Adds a new script "services-to-master.sh" and updates the Makefile
This commit is contained in:
parent
0ab17c3597
commit
9809eb029c
6
Makefile
6
Makefile
@ -28,11 +28,7 @@ reload-proxy:
|
|||||||
docker-compose -f docker/docker-compose.dev.yml exec -w /etc/caddy proxy caddy reload
|
docker-compose -f docker/docker-compose.dev.yml exec -w /etc/caddy proxy caddy reload
|
||||||
|
|
||||||
services-to-master:
|
services-to-master:
|
||||||
# Note: This script updates all submodules to upstream/master[1]. For setting the submodules to the linked
|
./services-to-master.sh
|
||||||
# commits use `git submodule update`. The `upstream` remote must be set up correctly to point to the main repo.
|
|
||||||
#
|
|
||||||
# [1] ...or main, or whatever branch the OS4 one is. See .gitmodules.
|
|
||||||
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)'
|
|
||||||
|
|
||||||
submodules-origin-to-upstream:
|
submodules-origin-to-upstream:
|
||||||
# You may only use this one time after cloning this repository.
|
# You may only use this one time after cloning this repository.
|
||||||
|
62
services-to-master.sh
Executable file
62
services-to-master.sh
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
# !/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)
|
||||||
|
# '
|
Loading…
Reference in New Issue
Block a user