1
0
Fork 0
mirror of synced 2024-12-21 14:11:08 -05:00

Make "yadm clone --recursive" work as expected.

The --recursive switch was ignored when YADM clones a dotfile repository.
This commit causes "yadm clone --recursive" to also clone submodules
in one go, similar to what GIT does when given the --recursive switch.
This commit is contained in:
Christof Warlich 2021-04-25 11:02:26 +02:00
parent a4d39c7504
commit 9f51902915

10
yadm
View file

@ -713,6 +713,7 @@ function clone() {
DO_BOOTSTRAP=1 DO_BOOTSTRAP=1
local -a args local -a args
local -i do_checkout=1 local -i do_checkout=1
local -i do_submodules=0
while [[ $# -gt 0 ]] ; do while [[ $# -gt 0 ]] ; do
case "$1" in case "$1" in
--bootstrap) # force bootstrap, without prompt --bootstrap) # force bootstrap, without prompt
@ -727,7 +728,10 @@ function clone() {
-n|--no-checkout) -n|--no-checkout)
do_checkout=0 do_checkout=0
;; ;;
--bare|--mirror|--recurse-submodules*|--recursive|--separate-git-dir=*) --recursive)
do_submodules=1
;;
--bare|--mirror|--recurse-submodules*|--separate-git-dir=*)
# ignore arguments without separate parameter # ignore arguments without separate parameter
;; ;;
--separate-git-dir) --separate-git-dir)
@ -794,6 +798,10 @@ function clone() {
"$GIT_PROGRAM" checkout -- ":/$file" "$GIT_PROGRAM" checkout -- ":/$file"
done done
if [[ $do_submodules -ne 0 ]]; then
"$GIT_PROGRAM" submodule update --init --recursive
fi
if [ -n "$("$GIT_PROGRAM" ls-files --modified)" ]; then if [ -n "$("$GIT_PROGRAM" ls-files --modified)" ]; then
local msg local msg
IFS='' read -r -d '' msg <<EOF IFS='' read -r -d '' msg <<EOF