Make "yadm clone --recursive" work as expected (#517)
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:
parent
f33e7c2e1f
commit
a86f2381b6
1 changed files with 9 additions and 1 deletions
10
yadm
10
yadm
|
@ -754,6 +754,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
|
||||||
|
@ -768,7 +769,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)
|
||||||
|
@ -835,6 +839,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
|
||||||
|
|
Loading…
Reference in a new issue