diff options
author | Johan Herland <johan@herland.net> | 2009-08-20 01:07:43 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-08-20 16:59:50 -0700 |
commit | e7fed18a89fae97655687e19f13cd802d8d70845 (patch) | |
tree | e9bd4f339a705f2290348e42a96ed69986cbe514 /t | |
parent | t7407: Use 'rev-parse --short' rather than bash's substring expansion notation (diff) | |
download | tgif-e7fed18a89fae97655687e19f13cd802d8d70845.tar.xz |
git clone: Add --recursive to automatically checkout (nested) submodules
Many projects using submodules expect all submodules to be checked out
in order to build/work correctly. A common command sequence for
developers on such projects is:
git clone url/to/project
cd project
git submodule update --init (--recursive)
This patch introduces the --recursive option to git-clone. The new
option causes git-clone to recursively clone and checkout all
submodules of the cloned project. Hence, the above command sequence
can be reduced to:
git clone --recursive url/to/project
--recursive is ignored if no checkout is done by the git-clone.
The patch also includes documentation and a selftest.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't')
-rwxr-xr-x | t/t7407-submodule-foreach.sh | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh index 519db49ea6..2a527750ce 100755 --- a/t/t7407-submodule-foreach.sh +++ b/t/t7407-submodule-foreach.sh @@ -222,4 +222,16 @@ test_expect_success 'test "status --recursive"' ' test_cmp expect actual ' +test_expect_success 'use "git clone --recursive" to checkout all submodules' ' + git clone --recursive super clone4 && + test -d clone4/.git && + test -d clone4/sub1/.git && + test -d clone4/sub2/.git && + test -d clone4/sub3/.git && + test -d clone4/nested1/.git && + test -d clone4/nested1/nested2/.git && + test -d clone4/nested1/nested2/nested3/.git && + test -d clone4/nested1/nested2/nested3/submodule/.git +' + test_done |