sparse-checkout: 'set' subcommand
authorDerrick Stolee <dstolee@microsoft.com>
Thu, 21 Nov 2019 22:04:36 +0000 (22:04 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 22 Nov 2019 07:11:43 +0000 (16:11 +0900)
commitf6039a9423d042d61fb4cfccb395bd04c4bd5322
treea985083a89d87ee18cc3d24a736468cdbaa7ff7c
parentd89f09c8289a764f0a974e02bd5b38cf60d1a7d7
sparse-checkout: 'set' subcommand

The 'git sparse-checkout set' subcommand takes a list of patterns
as arguments and writes them to the sparse-checkout file. Then, it
updates the working directory using 'git read-tree -mu HEAD'.

The 'set' subcommand will replace the entire contents of the
sparse-checkout file. The write_patterns_and_update() method is
extracted from cmd_sparse_checkout() to make it easier to implement
'add' and/or 'remove' subcommands in the future.

If the core.sparseCheckout config setting is disabled, then enable
the config setting in the worktree config. If we set the config
this way and the sparse-checkout fails, then re-disable the config
setting.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-sparse-checkout.txt
builtin/sparse-checkout.c
t/t1091-sparse-checkout-builtin.sh