Browse Source

Merge branch 'en/sparse-checkout'

The behaviour of "sparse-checkout" in the state "git clone
--no-checkout" left was changed accidentally in 2.27, which has
been corrected.

* en/sparse-checkout:
  sparse-checkout: avoid staging deletions of all files
maint
Junio C Hamano 5 years ago
parent
commit
a554228ffb
  1. 4
      builtin/sparse-checkout.c
  2. 22
      t/t1091-sparse-checkout-builtin.sh

4
builtin/sparse-checkout.c

@ -99,6 +99,10 @@ static int update_working_directory(struct pattern_list *pl) @@ -99,6 +99,10 @@ static int update_working_directory(struct pattern_list *pl)
struct lock_file lock_file = LOCK_INIT;
struct repository *r = the_repository;

/* If no branch has been checked out, there are no updates to make. */
if (is_index_unborn(r->index))
return UPDATE_SPARSITY_SUCCESS;

memset(&o, 0, sizeof(o));
o.verbose_update = isatty(2);
o.update = 1;

22
t/t1091-sparse-checkout-builtin.sh

@ -100,6 +100,28 @@ test_expect_success 'clone --sparse' ' @@ -100,6 +100,28 @@ test_expect_success 'clone --sparse' '
check_files clone a
'

test_expect_success 'interaction with clone --no-checkout (unborn index)' '
git clone --no-checkout "file://$(pwd)/repo" clone_no_checkout &&
git -C clone_no_checkout sparse-checkout init --cone &&
git -C clone_no_checkout sparse-checkout set folder1 &&

git -C clone_no_checkout sparse-checkout list >actual &&
cat >expect <<-\EOF &&
folder1
EOF
test_cmp expect actual &&

# nothing checked out, expect "No such file or directory"
! ls clone_no_checkout/* >actual &&
test_must_be_empty actual &&
test_path_is_missing clone_no_checkout/.git/index &&

# No branch is checked out until we manually switch to one
git -C clone_no_checkout switch master &&
test_path_is_file clone_no_checkout/.git/index &&
check_files clone_no_checkout a folder1
'

test_expect_success 'set enables config' '
git init empty-config &&
(

Loading…
Cancel
Save