From: Jens Lehmann <Jens.Lehmann@web.de>
To: Fredrik Gustafsson <iveqy@iveqy.com>
Cc: hvoigt@hvoigt.net, gitster@pobox.com, git@vger.kernel.org
Subject: Re: [PATCH v5] [submodule] Add --depth to submodule update/add
Date: Wed, 03 Jul 2013 09:26:02 +0200 [thread overview]
Message-ID: <51D3D20A.5000700@web.de> (raw)
In-Reply-To: <1372801376-32673-1-git-send-email-iveqy@iveqy.com>
Am 02.07.2013 23:42, schrieb Fredrik Gustafsson:
> Add the --depth option to the add and update commands of "git submodule",
> which is then passed on to the clone command. This is useful when the
> submodule(s) are huge and you're not really interested in anything but
> the latest commit.
>
> Tests are added and some indention adjustments were made to conform to the
> rest of the testfile on "submodule update can handle symbolic links in pwd".
>
> Signed-off-by: Fredrik Gustafsson <iveqy@iveqy.com>
> ---
>
> And I finally thought I'd everything right. I appriciate your reviews.
>
> I left the "" on $5 for consistency as suggested.
Thanks, looking good to me. Passes all tests and the new tests fail
when the change in the submodule script is reverted.
Acked-by: Jens Lehmann <Jens.Lehmann@web.de>
The only minor problem is that this patch still does not apply cleanly
to master, next or pu (I wonder what you based this on ;-). I had to
change the hunk for t7400 to this to make it apply to master:
diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
index 50e6ad7..a055b46 100755
--- a/t/t7400-submodule-basic.sh
+++ b/t/t7400-submodule-basic.sh
@@ -963,4 +963,19 @@ test_expect_success 'submodule with UTF-8 name' '
git submodule >&2 &&
test -n "$(git submodule | grep "$svname")"
'
+
+test_expect_success 'submodule add clone shallow submodule' '
+ mkdir super &&
+ pwd=$(pwd)
+ (
+ cd super &&
+ git init &&
+ git submodule add --depth=1 file://"$pwd"/example2 submodule &&
+ (
+ cd submodule &&
+ test 1 = $(git log --oneline | wc -l)
+ )
+ )
+'
+
test_done
> Documentation/git-submodule.txt | 10 ++++++++--
> git-submodule.sh | 24 +++++++++++++++++++++---
> t/t7400-submodule-basic.sh | 15 +++++++++++++++
> t/t7406-submodule-update.sh | 24 +++++++++++++++++-------
> 4 files changed, 61 insertions(+), 12 deletions(-)
>
> diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
> index e576713..605419f 100644
> --- a/Documentation/git-submodule.txt
> +++ b/Documentation/git-submodule.txt
> @@ -10,12 +10,12 @@ SYNOPSIS
> --------
> [verse]
> 'git submodule' [--quiet] add [-b <branch>] [-f|--force] [--name <name>]
> - [--reference <repository>] [--] <repository> [<path>]
> + [--reference <repository>] [--depth <depth>] [--] <repository> [<path>]
> 'git submodule' [--quiet] status [--cached] [--recursive] [--] [<path>...]
> 'git submodule' [--quiet] init [--] [<path>...]
> 'git submodule' [--quiet] deinit [-f|--force] [--] <path>...
> 'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch]
> - [-f|--force] [--rebase] [--reference <repository>]
> + [-f|--force] [--rebase] [--reference <repository>] [--depth <depth>]
> [--merge] [--recursive] [--] [<path>...]
> 'git submodule' [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>]
> [commit] [--] [<path>...]
> @@ -328,6 +328,12 @@ for linkgit:git-clone[1]'s `--reference` and `--shared` options carefully.
> only in the submodules of the current repo, but also
> in any nested submodules inside those submodules (and so on).
>
> +--depth::
> + This option is valid for add and update commands. Create a 'shallow'
> + clone with a history truncated to the specified number of revisions.
> + See linkgit:git-clone[1]
> +
> +
> <path>...::
> Paths to submodule(s). When specified this will restrict the command
> to only operate on the submodules found at the specified paths.
> diff --git a/git-submodule.sh b/git-submodule.sh
> index 79bfaac..2458e1f 100755
> --- a/git-submodule.sh
> +++ b/git-submodule.sh
> @@ -32,6 +32,7 @@ nofetch=
> update=
> prefix=
> custom_name=
> +depth=
>
> # The function takes at most 2 arguments. The first argument is the
> # URL that navigates to the submodule origin repo. When relative, this URL
> @@ -211,6 +212,7 @@ module_clone()
> name=$2
> url=$3
> reference="$4"
> + depth="$5"
> quiet=
> if test -n "$GIT_QUIET"
> then
> @@ -233,7 +235,7 @@ module_clone()
> mkdir -p "$gitdir_base"
> (
> clear_local_git_env
> - git clone $quiet -n ${reference:+"$reference"} \
> + git clone $quiet ${depth:+"$depth"} -n ${reference:+"$reference"} \
> --separate-git-dir "$gitdir" "$url" "$sm_path"
> ) ||
> die "$(eval_gettext "Clone of '\$url' into submodule path '\$sm_path' failed")"
> @@ -309,6 +311,14 @@ cmd_add()
> custom_name=$2
> shift
> ;;
> + --depth)
> + case "$2" in '') usage ;; esac
> + depth="--depth=$2"
> + shift
> + ;;
> + --depth=*)
> + depth=$1
> + ;;
> --)
> shift
> break
> @@ -405,7 +415,7 @@ Use -f if you really want to add it." >&2
> echo "$(eval_gettext "Reactivating local git directory for submodule '\$sm_name'.")"
> fi
> fi
> - module_clone "$sm_path" "$sm_name" "$realrepo" "$reference" || exit
> + module_clone "$sm_path" "$sm_name" "$realrepo" "$reference" "$depth" || exit
> (
> clear_local_git_env
> cd "$sm_path" &&
> @@ -676,6 +686,14 @@ cmd_update()
> --checkout)
> update="checkout"
> ;;
> + --depth)
> + case "$2" in '') usage ;; esac
> + depth="--depth=$2"
> + shift
> + ;;
> + --depth=*)
> + depth=$1
> + ;;
> --)
> shift
> break
> @@ -735,7 +753,7 @@ Maybe you want to use 'update --init'?")"
>
> if ! test -d "$sm_path"/.git -o -f "$sm_path"/.git
> then
> - module_clone "$sm_path" "$name" "$url" "$reference" || exit
> + module_clone "$sm_path" "$name" "$url" "$reference" "$depth" || exit
> cloned_modules="$cloned_modules;$name"
> subsha1=
> else
> diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
> index f47cc7b..bfd1ce9 100755
> --- a/t/t7400-submodule-basic.sh
> +++ b/t/t7400-submodule-basic.sh
> @@ -868,4 +868,19 @@ test_expect_success 'submodule deinit fails when submodule has a .git directory
> test -n "$(git config --get-regexp "submodule\.example\.")"
> '
>
> +test_expect_success 'submodule add clone shallow submodule' '
> + mkdir super &&
> + pwd=$(pwd)
> + (
> + cd super &&
> + git init &&
> + git submodule add --depth=1 file://"$pwd"/example2 submodule &&
> + (
> + cd submodule &&
> + test 1 = $(git log --oneline | wc -l)
> + )
> + )
> +'
> +
> +
> test_done
> diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
> index a4ffea0..e0a06e2 100755
> --- a/t/t7406-submodule-update.sh
> +++ b/t/t7406-submodule-update.sh
> @@ -685,14 +685,24 @@ test_expect_success 'submodule update properly revives a moved submodule' '
> test_expect_success SYMLINKS 'submodule update can handle symbolic links in pwd' '
> mkdir -p linked/dir &&
> ln -s linked/dir linkto &&
> - (
> - cd linkto &&
> - git clone "$TRASH_DIRECTORY"/super_update_r2 super &&
> - (
> - cd super &&
> - git submodule update --init --recursive
> - )
> + (cd linkto &&
> + git clone "$TRASH_DIRECTORY"/super_update_r2 super &&
> + (cd super &&
> + git submodule update --init --recursive
> + )
> )
> '
>
> +test_expect_success 'submodule update clone shallow submodule' '
> + git clone cloned super3 &&
> + pwd=$(pwd)
> + (cd super3 &&
> + sed -e "s#url = ../#url = file://$pwd/#" <.gitmodules >.gitmodules.tmp &&
> + mv -f .gitmodules.tmp .gitmodules &&
> + git submodule update --init --depth=3
> + (cd submodule &&
> + test 1 = $(git log --oneline | wc -l)
> + )
> + )
> +'
> test_done
>
next prev parent reply other threads:[~2013-07-03 7:26 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-02 1:39 [PATCH v3] [submodule] Add --depth to submodule update/add Fredrik Gustafsson
2013-07-02 17:10 ` Andreas Schwab
2013-07-02 17:46 ` Jens Lehmann
2013-07-02 18:08 ` [PATCH v4] " Fredrik Gustafsson
2013-07-02 21:14 ` Jens Lehmann
2013-07-02 21:42 ` [PATCH v5] " Fredrik Gustafsson
2013-07-03 7:26 ` Jens Lehmann [this message]
2013-07-03 8:13 ` Junio C Hamano
2013-07-03 8:38 ` Fredrik Gustafsson
2013-07-03 17:36 ` Junio C Hamano
2013-07-02 19:01 ` [PATCH v3] " Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51D3D20A.5000700@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvoigt@hvoigt.net \
--cc=iveqy@iveqy.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).