Merge branch 'kb/maint-submodule-savearg'
* kb/maint-submodule-savearg: submodule: only preserve flags across recursive status/update invocations submodule: preserve all arguments exactly when recursing
This commit is contained in:
commit
aef5c38b59
@ -374,41 +374,35 @@ cmd_init()
|
|||||||
cmd_update()
|
cmd_update()
|
||||||
{
|
{
|
||||||
# parse $args after "submodule ... update".
|
# parse $args after "submodule ... update".
|
||||||
orig_args="$@"
|
orig_flags=
|
||||||
while test $# -ne 0
|
while test $# -ne 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-q|--quiet)
|
-q|--quiet)
|
||||||
shift
|
|
||||||
GIT_QUIET=1
|
GIT_QUIET=1
|
||||||
;;
|
;;
|
||||||
-i|--init)
|
-i|--init)
|
||||||
init=1
|
init=1
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-N|--no-fetch)
|
-N|--no-fetch)
|
||||||
shift
|
|
||||||
nofetch=1
|
nofetch=1
|
||||||
;;
|
;;
|
||||||
-r|--rebase)
|
-r|--rebase)
|
||||||
shift
|
|
||||||
update="rebase"
|
update="rebase"
|
||||||
;;
|
;;
|
||||||
--reference)
|
--reference)
|
||||||
case "$2" in '') usage ;; esac
|
case "$2" in '') usage ;; esac
|
||||||
reference="--reference=$2"
|
reference="--reference=$2"
|
||||||
shift 2
|
orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
|
||||||
|
shift
|
||||||
;;
|
;;
|
||||||
--reference=*)
|
--reference=*)
|
||||||
reference="$1"
|
reference="$1"
|
||||||
shift
|
|
||||||
;;
|
;;
|
||||||
-m|--merge)
|
-m|--merge)
|
||||||
shift
|
|
||||||
update="merge"
|
update="merge"
|
||||||
;;
|
;;
|
||||||
--recursive)
|
--recursive)
|
||||||
shift
|
|
||||||
recursive=1
|
recursive=1
|
||||||
;;
|
;;
|
||||||
--)
|
--)
|
||||||
@ -422,6 +416,8 @@ cmd_update()
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
|
||||||
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
if test -n "$init"
|
if test -n "$init"
|
||||||
@ -500,7 +496,7 @@ cmd_update()
|
|||||||
|
|
||||||
if test -n "$recursive"
|
if test -n "$recursive"
|
||||||
then
|
then
|
||||||
(clear_local_git_env; cd "$path" && cmd_update $orig_args) ||
|
(clear_local_git_env; cd "$path" && eval cmd_update "$orig_flags") ||
|
||||||
die "Failed to recurse into submodule path '$path'"
|
die "Failed to recurse into submodule path '$path'"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -733,7 +729,7 @@ cmd_summary() {
|
|||||||
cmd_status()
|
cmd_status()
|
||||||
{
|
{
|
||||||
# parse $args after "submodule ... status".
|
# parse $args after "submodule ... status".
|
||||||
orig_args="$@"
|
orig_flags=
|
||||||
while test $# -ne 0
|
while test $# -ne 0
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@ -757,6 +753,7 @@ cmd_status()
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
orig_flags="$orig_flags $(git rev-parse --sq-quote "$1")"
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -790,7 +787,7 @@ cmd_status()
|
|||||||
prefix="$displaypath/"
|
prefix="$displaypath/"
|
||||||
clear_local_git_env
|
clear_local_git_env
|
||||||
cd "$path" &&
|
cd "$path" &&
|
||||||
cmd_status $orig_args
|
eval cmd_status "$orig_args"
|
||||||
) ||
|
) ||
|
||||||
die "Failed to recurse into submodule path '$path'"
|
die "Failed to recurse into submodule path '$path'"
|
||||||
fi
|
fi
|
||||||
|
@ -226,6 +226,21 @@ test_expect_success 'test "status --recursive"' '
|
|||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
sed -e "/nested1 /s/.*/+$nested1sha1 nested1 (file2~1)/;/sub[1-3]/d" < expect > expect2
|
||||||
|
mv -f expect2 expect
|
||||||
|
|
||||||
|
test_expect_success 'ensure "status --cached --recursive" preserves the --cached flag' '
|
||||||
|
(
|
||||||
|
cd clone3 &&
|
||||||
|
(
|
||||||
|
cd nested1 &&
|
||||||
|
test_commit file2
|
||||||
|
) &&
|
||||||
|
git submodule status --cached --recursive -- nested1 > ../actual
|
||||||
|
) &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success 'use "git clone --recursive" to checkout all submodules' '
|
test_expect_success 'use "git clone --recursive" to checkout all submodules' '
|
||||||
git clone --recursive super clone4 &&
|
git clone --recursive super clone4 &&
|
||||||
test -d clone4/.git &&
|
test -d clone4/.git &&
|
||||||
@ -238,4 +253,39 @@ test_expect_success 'use "git clone --recursive" to checkout all submodules' '
|
|||||||
test -d clone4/nested1/nested2/nested3/submodule/.git
|
test -d clone4/nested1/nested2/nested3/submodule/.git
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'test "update --recursive" with a flag with spaces' '
|
||||||
|
git clone super "common objects" &&
|
||||||
|
git clone super clone5 &&
|
||||||
|
(
|
||||||
|
cd clone5 &&
|
||||||
|
test ! -d nested1/.git &&
|
||||||
|
git submodule update --init --recursive --reference="$(dirname "$PWD")/common objects" &&
|
||||||
|
test -d nested1/.git &&
|
||||||
|
test -d nested1/nested2/.git &&
|
||||||
|
test -d nested1/nested2/nested3/.git &&
|
||||||
|
test -f nested1/.git/objects/info/alternates &&
|
||||||
|
test -f nested1/nested2/.git/objects/info/alternates &&
|
||||||
|
test -f nested1/nested2/nested3/.git/objects/info/alternates
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'use "update --recursive nested1" to checkout all submodules rooted in nested1' '
|
||||||
|
git clone super clone6 &&
|
||||||
|
(
|
||||||
|
cd clone6 &&
|
||||||
|
test ! -d sub1/.git &&
|
||||||
|
test ! -d sub2/.git &&
|
||||||
|
test ! -d sub3/.git &&
|
||||||
|
test ! -d nested1/.git &&
|
||||||
|
git submodule update --init --recursive -- nested1 &&
|
||||||
|
test ! -d sub1/.git &&
|
||||||
|
test ! -d sub2/.git &&
|
||||||
|
test ! -d sub3/.git &&
|
||||||
|
test -d nested1/.git &&
|
||||||
|
test -d nested1/nested2/.git &&
|
||||||
|
test -d nested1/nested2/nested3/.git &&
|
||||||
|
test -d nested1/nested2/nested3/submodule/.git
|
||||||
|
)
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user