Merge branch 'ds/sparse-checkout-requires-per-worktree-config'
"git sparse-checkout" wants to work with per-worktree configuration, but did not work well in a worktree attached to a bare repository. * ds/sparse-checkout-requires-per-worktree-config: config: make git_configset_get_string_tmp() private worktree: copy sparse-checkout patterns and config on add sparse-checkout: set worktree-config correctly config: add repo_config_set_worktree_gently() worktree: create init_worktree_config() Documentation: add extensions.worktreeConfig details
This commit is contained in:
@ -15,6 +15,7 @@
|
||||
#include "wt-status.h"
|
||||
#include "quote.h"
|
||||
#include "sparse-index.h"
|
||||
#include "worktree.h"
|
||||
|
||||
static const char *empty_base = "";
|
||||
|
||||
@ -361,26 +362,23 @@ enum sparse_checkout_mode {
|
||||
|
||||
static int set_config(enum sparse_checkout_mode mode)
|
||||
{
|
||||
const char *config_path;
|
||||
|
||||
if (upgrade_repository_format(1) < 0)
|
||||
die(_("unable to upgrade repository format to enable worktreeConfig"));
|
||||
if (git_config_set_gently("extensions.worktreeConfig", "true")) {
|
||||
error(_("failed to set extensions.worktreeConfig setting"));
|
||||
/* Update to use worktree config, if not already. */
|
||||
if (init_worktree_config(the_repository)) {
|
||||
error(_("failed to initialize worktree config"));
|
||||
return 1;
|
||||
}
|
||||
|
||||
config_path = git_path("config.worktree");
|
||||
git_config_set_in_file_gently(config_path,
|
||||
"core.sparseCheckout",
|
||||
mode ? "true" : NULL);
|
||||
|
||||
git_config_set_in_file_gently(config_path,
|
||||
"core.sparseCheckoutCone",
|
||||
mode == MODE_CONE_PATTERNS ? "true" : NULL);
|
||||
if (repo_config_set_worktree_gently(the_repository,
|
||||
"core.sparseCheckout",
|
||||
mode ? "true" : "false") ||
|
||||
repo_config_set_worktree_gently(the_repository,
|
||||
"core.sparseCheckoutCone",
|
||||
mode == MODE_CONE_PATTERNS ?
|
||||
"true" : "false"))
|
||||
return 1;
|
||||
|
||||
if (mode == MODE_NO_PATTERNS)
|
||||
set_sparse_index_config(the_repository, 0);
|
||||
return set_sparse_index_config(the_repository, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user