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
This commit is contained in:
Junio C Hamano 2020-06-17 21:54:02 -07:00
commit a554228ffb
2 changed files with 26 additions and 0 deletions

View file

@ -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;

View file

@ -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 &&
(