#!/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}" || exit 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 || exit done echo "All submodules updated successfully." nix flake update