sparse-checkout: make --cone the default

Make cone mode the default, and update the documentation accordingly.

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Elijah Newren 2022-04-22 02:32:19 +00:00 committed by Junio C Hamano
parent dde1358970
commit 2d95707a02
3 changed files with 15 additions and 13 deletions

View File

@ -615,8 +615,10 @@ core.sparseCheckout::
core.sparseCheckoutCone:: core.sparseCheckoutCone::
Enables the "cone mode" of the sparse checkout feature. When the Enables the "cone mode" of the sparse checkout feature. When the
sparse-checkout file contains a limited set of patterns, then this sparse-checkout file contains a limited set of patterns, this
mode provides significant performance advantages. See mode provides significant performance advantages. The "non
cone mode" can be requested to allow specifying a more flexible
patterns by setting this variable to 'false'. See
linkgit:git-sparse-checkout[1] for more information. linkgit:git-sparse-checkout[1] for more information.
core.abbrev:: core.abbrev::

View File

@ -22,8 +22,8 @@ present, or undo and go back to having all tracked files present in the
working copy. working copy.
The subset of files is chosen by providing a list of directories in The subset of files is chosen by providing a list of directories in
cone mode (which is recommended), or by providing a list of patterns cone mode (the default), or by providing a list of patterns in
in non-cone mode. non-cone mode.
When in a sparse-checkout, other Git commands behave a bit differently. When in a sparse-checkout, other Git commands behave a bit differently.
For example, switching branches will not update paths outside the For example, switching branches will not update paths outside the
@ -60,7 +60,7 @@ When the `--stdin` option is provided, the directories or patterns are
read from standard in as a newline-delimited list instead of from the read from standard in as a newline-delimited list instead of from the
arguments. arguments.
+ +
When `--cone` is passed or `core.sparseCheckoutCone` is enabled, the When `--cone` is passed or `core.sparseCheckoutCone` is not false, the
input list is considered a list of directories. This allows for input list is considered a list of directories. This allows for
better performance with a limited set of patterns (see 'CONE PATTERN better performance with a limited set of patterns (see 'CONE PATTERN
SET' below). The input format matches the output of `git ls-tree SET' below). The input format matches the output of `git ls-tree
@ -68,10 +68,9 @@ SET' below). The input format matches the output of `git ls-tree
double quote (") as C-style quoted strings. Note that the set command double quote (") as C-style quoted strings. Note that the set command
will write patterns to the sparse-checkout file to include all files will write patterns to the sparse-checkout file to include all files
contained in those directories (recursively) as well as files that are contained in those directories (recursively) as well as files that are
siblings of ancestor directories. This may become the default in the siblings of ancestor directories.
future; --no-cone can be passed to request non-cone mode.
+ +
When `--no-cone` is passed or `core.sparseCheckoutCone` is not enabled, When `--no-cone` is passed or `core.sparseCheckoutCone` is set to false,
the input list is considered a list of patterns. This mode is harder the input list is considered a list of patterns. This mode is harder
to use and less performant, and is thus not recommended. See the to use and less performant, and is thus not recommended. See the
"Sparse Checkout" section of linkgit:git-read-tree[1] and the "Pattern "Sparse Checkout" section of linkgit:git-read-tree[1] and the "Pattern
@ -227,10 +226,11 @@ patterns. The resulting sparse-checkout file is now
Here, order matters, so the negative patterns are overridden by the positive Here, order matters, so the negative patterns are overridden by the positive
patterns that appear lower in the file. patterns that appear lower in the file.
If `core.sparseCheckoutCone=true`, then Git will parse the sparse-checkout file Unless `core.sparseCheckoutCone` is explicitly set to `false`, Git will
expecting patterns of these types. Git will warn if the patterns do not match. parse the sparse-checkout file expecting patterns of these types. Git will
If the patterns do match the expected format, then Git will use faster hash- warn if the patterns do not match. If the patterns do match the expected
based algorithms to compute inclusion in the sparse-checkout. format, then Git will use faster hash-based algorithms to compute inclusion
in the sparse-checkout.
In the cone mode case, the `git sparse-checkout list` subcommand will list the In the cone mode case, the `git sparse-checkout list` subcommand will list the
directories that define the recursive patterns. For the example sparse-checkout directories that define the recursive patterns. For the example sparse-checkout

View File

@ -397,7 +397,7 @@ static int update_modes(int *cone_mode, int *sparse_index)
/* Set cone/non-cone mode appropriately */ /* Set cone/non-cone mode appropriately */
core_apply_sparse_checkout = 1; core_apply_sparse_checkout = 1;
if (*cone_mode == 1) { if (*cone_mode == 1 || *cone_mode == -1) {
mode = MODE_CONE_PATTERNS; mode = MODE_CONE_PATTERNS;
core_sparse_checkout_cone = 1; core_sparse_checkout_cone = 1;
} else { } else {