[PATCH 15/15] git-clone: add --submodules for cloning submodules
- From
- skimo@liacs.nl <skimo@liacs.nl>
- Date
- May 20, 2007, 18:04 UTC
- Message-ID
- <11796842904153-git-send-email-skimo@liacs.nl>
- In-Reply-To
- <11796842882917-git-send-email-skimo@liacs.nl>
From: Sven Verdoolaege <skimo@kotnet.org>
When the --submodules option is specified, git-clone will search for submodule.<submodule>.url options in the remote configuration and clone each submodule using the first url that it can use from the local site.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org> --- Documentation/git-clone.txt | 6 +++++- git-clone.sh | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt index 644bf12..565155b 100644 --- a/Documentation/git-clone.txt +++ b/Documentation/git-clone.txt @@ -11,7 +11,7 @@ SYNOPSIS [verse] 'git-clone' [--template=<template_directory>] [-l [-s]] [-q] [-n] [--bare] [-o <name>] [-u <upload-pack>] [--reference <repository>] - [--depth <depth>] <repository> [<directory>] + [--depth <depth>] [--submodules] <repository> [<directory>] DESCRIPTION ----------- @@ -105,6 +105,10 @@ OPTIONS with a long history, and would want to send in a fixes as patches. +--submodules:: + Clone submodules specified in (remote) configuration parameters + submodule.<submodule>.url. + <repository>:: The (possibly remote) repository to clone from. It can be any URL git-fetch supports. diff --git a/git-clone.sh b/git-clone.sh index fdd354f..a51b887 100755 --- a/git-clone.sh +++ b/git-clone.sh @@ -14,7 +14,7 @@ die() { } usage() { - die "Usage: $0 [--template=<template_directory>] [--reference <reference-repo>] [--bare] [-l [-s]] [-q] [-u <upload-pack>] [--origin <name>] [--depth <n>] [-n] <repo> [<dir>]" + die "Usage: $0 [--template=<template_directory>] [--reference <reference-repo>] [--bare] [-l [-s]] [-q] [-u <upload-pack>] [--origin <name>] [--depth <n>] [-n] [--submodules] <repo> [<dir>]" } get_repo_base() { @@ -88,6 +88,7 @@ origin_override= use_separate_remote=t depth= no_progress= +submodules= test -t 1 || no_progress=--no-progress while case "$#,$1" in @@ -138,6 +139,8 @@ while *,--depth) shift depth="--depth=$1";; + *,--su|*,--sub|*,--subm|*,--submo|*,--submod|*,--submodu|*,--submodul|\ + *,--submodule|*,--submodules) submodules="--submodules" ;; *,-*) usage ;; *) break ;; esac @@ -156,6 +159,10 @@ then then die '--bare and --origin $origin options are incompatible.' fi + if test -n "$submodules" + then + die '--bare and --submodules origin options are incompatible.' + fi no_checkout=yes use_separate_remote= fi @@ -401,10 +408,15 @@ then git-config branch."$head_points_at".merge "refs/heads/$head_points_at" esac + if test -n "$submodules" + then + git-config core.submodules true + fi + case "$no_checkout" in '') test "z$quiet" = z -a "z$no_progress" = z && v=-v || v= - git-read-tree -m -u $v HEAD HEAD + git-read-tree -m -u $v $submodules HEAD HEAD esac fi rm -f "$GIT_DIR/CLONE_HEAD" "$GIT_DIR/REMOTE_HEAD"
-- 1.5.2.rc3.815.g8fc2