#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail paths=$(git config --file .gitmodules --name-only --get-regexp path | while read -r line; do path=$(git config --file .gitmodules --get "$line") url=$(git config --file .gitmodules --get "${line%.*}.url") if [[ $url == *"karaolidis"* ]]; then echo "$path" fi done) for path in $paths; do echo "Processing submodule: $path" cd "$path" git checkout master git fetch upstream git merge upstream/master branches=$(git for-each-ref --format='%(refname:short)' refs/heads/ | grep -v '^master$') for branch in $branches; do git checkout "$branch" git rebase master done git checkout integration git push origin --all --force-with-lease git push origin --tags --force-with-lease cd - > /dev/null done echo "All submodules updated successfully." nix flake update