Browse Source

Merge branch 'sb/clone-shallow-passthru' into maint

Fix an unintended regression in v2.9 that breaks "clone --depth"
that recurses down to submodules by forcing the submodules to also
be cloned shallowly, which many server instances that host upstream
of the submodules are not prepared for.

* sb/clone-shallow-passthru:
  clone: do not let --depth imply --shallow-submodules
maint
Junio C Hamano 9 years ago
parent
commit
1a88ca99db
  1. 5
      Documentation/git-clone.txt
  2. 5
      builtin/clone.c
  3. 19
      t/t5614-clone-submodules.sh

5
Documentation/git-clone.txt

@ -191,9 +191,8 @@ objects from the source repository into a pack in the cloned repository. @@ -191,9 +191,8 @@ objects from the source repository into a pack in the cloned repository.
Create a 'shallow' clone with a history truncated to the
specified number of commits. Implies `--single-branch` unless
`--no-single-branch` is given to fetch the histories near the
tips of all branches. This implies `--shallow-submodules`. If
you want to have a shallow superproject clone, but full submodules,
also pass `--no-shallow-submodules`.
tips of all branches. If you want to clone submodules shallowly,
also pass `--shallow-submodules`.

--[no-]single-branch::
Clone only the history leading to the tip of a single branch,

5
builtin/clone.c

@ -40,7 +40,7 @@ static const char * const builtin_clone_usage[] = { @@ -40,7 +40,7 @@ static const char * const builtin_clone_usage[] = {

static int option_no_checkout, option_bare, option_mirror, option_single_branch = -1;
static int option_local = -1, option_no_hardlinks, option_shared, option_recursive;
static int option_shallow_submodules = -1;
static int option_shallow_submodules;
static char *option_template, *option_depth;
static char *option_origin = NULL;
static char *option_branch = NULL;
@ -738,8 +738,7 @@ static int checkout(void) @@ -738,8 +738,7 @@ static int checkout(void)
struct argv_array args = ARGV_ARRAY_INIT;
argv_array_pushl(&args, "submodule", "update", "--init", "--recursive", NULL);

if (option_shallow_submodules == 1
|| (option_shallow_submodules == -1 && option_depth))
if (option_shallow_submodules == 1)
argv_array_push(&args, "--depth=1");

if (max_jobs != -1)

19
t/t5614-clone-submodules.sh

@ -37,9 +37,9 @@ test_expect_success 'nonshallow clone implies nonshallow submodule' ' @@ -37,9 +37,9 @@ test_expect_success 'nonshallow clone implies nonshallow submodule' '
)
'

test_expect_success 'shallow clone implies shallow submodule' '
test_expect_success 'shallow clone with shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&
git clone --recurse-submodules --depth 2 --shallow-submodules "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
@ -52,6 +52,21 @@ test_expect_success 'shallow clone implies shallow submodule' ' @@ -52,6 +52,21 @@ test_expect_success 'shallow clone implies shallow submodule' '
)
'

test_expect_success 'shallow clone does not imply shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --depth 2 "file://$pwd/." super_clone &&
(
cd super_clone &&
git log --oneline >lines &&
test_line_count = 2 lines
) &&
(
cd super_clone/sub &&
git log --oneline >lines &&
test_line_count = 3 lines
)
'

test_expect_success 'shallow clone with non shallow submodule' '
test_when_finished "rm -rf super_clone" &&
git clone --recurse-submodules --depth 2 --no-shallow-submodules "file://$pwd/." super_clone &&

Loading…
Cancel
Save