Files
dotfiles/.config/zsh/autoload/git/git-ssync
Julian Prein 0c0231a2ef git:ssync: Add --new flag
I sometimes do not want to change the working tree of submodules I
changed locally.
2025-01-28 17:25:46 +01:00

27 lines
513 B
Bash
Executable File

#!/usr/bin/env zsh
emulate -L zsh -o err_return
git submodule sync --recursive
if [[ "$1" == "--new" ]]; then
# Only checkout new submodules
local toplevel
toplevel="$(git rev-parse --show-toplevel)"
cd "$toplevel"
grep path .gitmodules \
| cut -d= -f2 \
| sed 's/^\s*//' \
| while read -r line; do
# keep only empty ones
find "$line" -maxdepth 0 -empty
done \
| while read -r line; do
git submodule update --init --recursive -- "$line"
done
else
git submodule update --init --recursive
fi