mirror of
https://github.com/git/git.git
synced 2024-12-04 15:34:05 +08:00
scalar: teach 'reconfigure' to optionally handle all registered enlistments
After a Scalar upgrade, it can come in really handy if there is an easy way to reconfigure all Scalar enlistments. This new option offers this functionality. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
cb59d55ec1
commit
4582676075
@ -488,22 +488,77 @@ static int cmd_register(int argc, const char **argv)
|
||||
return register_dir();
|
||||
}
|
||||
|
||||
static int get_scalar_repos(const char *key, const char *value, void *data)
|
||||
{
|
||||
struct string_list *list = data;
|
||||
|
||||
if (!strcmp(key, "scalar.repo"))
|
||||
string_list_append(list, value);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cmd_reconfigure(int argc, const char **argv)
|
||||
{
|
||||
int all = 0;
|
||||
struct option options[] = {
|
||||
OPT_BOOL('a', "all", &all,
|
||||
N_("reconfigure all registered enlistments")),
|
||||
OPT_END(),
|
||||
};
|
||||
const char * const usage[] = {
|
||||
N_("scalar reconfigure [<enlistment>]"),
|
||||
N_("scalar reconfigure [--all | <enlistment>]"),
|
||||
NULL
|
||||
};
|
||||
struct string_list scalar_repos = STRING_LIST_INIT_DUP;
|
||||
int i, res = 0;
|
||||
struct repository r = { NULL };
|
||||
struct strbuf commondir = STRBUF_INIT, gitdir = STRBUF_INIT;
|
||||
|
||||
argc = parse_options(argc, argv, NULL, options,
|
||||
usage, 0);
|
||||
|
||||
setup_enlistment_directory(argc, argv, usage, options, NULL);
|
||||
if (!all) {
|
||||
setup_enlistment_directory(argc, argv, usage, options, NULL);
|
||||
|
||||
return set_recommended_config(1);
|
||||
return set_recommended_config(1);
|
||||
}
|
||||
|
||||
if (argc > 0)
|
||||
usage_msg_opt(_("--all or <enlistment>, but not both"),
|
||||
usage, options);
|
||||
|
||||
git_config(get_scalar_repos, &scalar_repos);
|
||||
|
||||
for (i = 0; i < scalar_repos.nr; i++) {
|
||||
const char *dir = scalar_repos.items[i].string;
|
||||
|
||||
strbuf_reset(&commondir);
|
||||
strbuf_reset(&gitdir);
|
||||
|
||||
if (chdir(dir) < 0) {
|
||||
warning_errno(_("could not switch to '%s'"), dir);
|
||||
res = -1;
|
||||
} else if (discover_git_directory(&commondir, &gitdir) < 0) {
|
||||
warning_errno(_("git repository gone in '%s'"), dir);
|
||||
res = -1;
|
||||
} else {
|
||||
git_config_clear();
|
||||
|
||||
the_repository = &r;
|
||||
r.commondir = commondir.buf;
|
||||
r.gitdir = gitdir.buf;
|
||||
|
||||
if (set_recommended_config(1) < 0)
|
||||
res = -1;
|
||||
}
|
||||
}
|
||||
|
||||
string_list_clear(&scalar_repos, 1);
|
||||
strbuf_release(&commondir);
|
||||
strbuf_release(&gitdir);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int cmd_run(int argc, const char **argv)
|
||||
|
@ -13,7 +13,7 @@ scalar list
|
||||
scalar register [<enlistment>]
|
||||
scalar unregister [<enlistment>]
|
||||
scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>]
|
||||
scalar reconfigure <enlistment>
|
||||
scalar reconfigure [ --all | <enlistment> ]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -32,8 +32,8 @@ an existing Git worktree with Scalar whose name is not `src`, the enlistment
|
||||
will be identical to the worktree.
|
||||
|
||||
The `scalar` command implements various subcommands, and different options
|
||||
depending on the subcommand. With the exception of `clone` and `list`, all
|
||||
subcommands expect to be run in an enlistment.
|
||||
depending on the subcommand. With the exception of `clone`, `list` and
|
||||
`reconfigure --all`, all subcommands expect to be run in an enlistment.
|
||||
|
||||
COMMANDS
|
||||
--------
|
||||
@ -125,6 +125,9 @@ After a Scalar upgrade, or when the configuration of a Scalar enlistment
|
||||
was somehow corrupted or changed by mistake, this subcommand allows to
|
||||
reconfigure the enlistment.
|
||||
|
||||
With the `--all` option, all enlistments currently registered with Scalar
|
||||
will be reconfigured. Use this option after each Scalar upgrade.
|
||||
|
||||
SEE ALSO
|
||||
--------
|
||||
linkgit:git-clone[1], linkgit:git-maintenance[1].
|
||||
|
@ -70,6 +70,9 @@ test_expect_success 'scalar reconfigure' '
|
||||
scalar register one &&
|
||||
git -C one/src config core.preloadIndex false &&
|
||||
scalar reconfigure one &&
|
||||
test true = "$(git -C one/src config core.preloadIndex)" &&
|
||||
git -C one/src config core.preloadIndex false &&
|
||||
scalar reconfigure -a &&
|
||||
test true = "$(git -C one/src config core.preloadIndex)"
|
||||
'
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user