Merge branch 'ds/scalar-reconfigure-all-fix' into maint-2.45
Scalar fix. * ds/scalar-reconfigure-all-fix: scalar: avoid segfault in reconfigure --allmaint
commit
b608b33f3d
10
scalar.c
10
scalar.c
|
@ -645,7 +645,6 @@ static int cmd_reconfigure(int argc, const char **argv)
|
||||||
};
|
};
|
||||||
struct string_list scalar_repos = STRING_LIST_INIT_DUP;
|
struct string_list scalar_repos = STRING_LIST_INIT_DUP;
|
||||||
int i, res = 0;
|
int i, res = 0;
|
||||||
struct repository r = { NULL };
|
|
||||||
struct strbuf commondir = STRBUF_INIT, gitdir = STRBUF_INIT;
|
struct strbuf commondir = STRBUF_INIT, gitdir = STRBUF_INIT;
|
||||||
|
|
||||||
argc = parse_options(argc, argv, NULL, options,
|
argc = parse_options(argc, argv, NULL, options,
|
||||||
|
@ -665,6 +664,7 @@ static int cmd_reconfigure(int argc, const char **argv)
|
||||||
|
|
||||||
for (i = 0; i < scalar_repos.nr; i++) {
|
for (i = 0; i < scalar_repos.nr; i++) {
|
||||||
int succeeded = 0;
|
int succeeded = 0;
|
||||||
|
struct repository *old_repo, r = { NULL };
|
||||||
const char *dir = scalar_repos.items[i].string;
|
const char *dir = scalar_repos.items[i].string;
|
||||||
|
|
||||||
strbuf_reset(&commondir);
|
strbuf_reset(&commondir);
|
||||||
|
@ -712,13 +712,17 @@ static int cmd_reconfigure(int argc, const char **argv)
|
||||||
|
|
||||||
git_config_clear();
|
git_config_clear();
|
||||||
|
|
||||||
|
if (repo_init(&r, gitdir.buf, commondir.buf))
|
||||||
|
goto loop_end;
|
||||||
|
|
||||||
|
old_repo = the_repository;
|
||||||
the_repository = &r;
|
the_repository = &r;
|
||||||
r.commondir = commondir.buf;
|
|
||||||
r.gitdir = gitdir.buf;
|
|
||||||
|
|
||||||
if (set_recommended_config(1) >= 0)
|
if (set_recommended_config(1) >= 0)
|
||||||
succeeded = 1;
|
succeeded = 1;
|
||||||
|
|
||||||
|
the_repository = old_repo;
|
||||||
|
|
||||||
loop_end:
|
loop_end:
|
||||||
if (!succeeded) {
|
if (!succeeded) {
|
||||||
res = -1;
|
res = -1;
|
||||||
|
|
|
@ -180,6 +180,44 @@ test_expect_success 'scalar reconfigure' '
|
||||||
test true = "$(git -C one/src config core.preloadIndex)"
|
test true = "$(git -C one/src config core.preloadIndex)"
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'scalar reconfigure --all with includeIf.onbranch' '
|
||||||
|
repos="two three four" &&
|
||||||
|
for num in $repos
|
||||||
|
do
|
||||||
|
git init $num/src &&
|
||||||
|
scalar register $num/src &&
|
||||||
|
git -C $num/src config includeif."onbranch:foo".path something &&
|
||||||
|
git -C $num/src config core.preloadIndex false || return 1
|
||||||
|
done &&
|
||||||
|
|
||||||
|
scalar reconfigure --all &&
|
||||||
|
|
||||||
|
for num in $repos
|
||||||
|
do
|
||||||
|
test true = "$(git -C $num/src config core.preloadIndex)" || return 1
|
||||||
|
done
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'scalar reconfigure --all with detached HEADs' '
|
||||||
|
repos="two three four" &&
|
||||||
|
for num in $repos
|
||||||
|
do
|
||||||
|
rm -rf $num/src &&
|
||||||
|
git init $num/src &&
|
||||||
|
scalar register $num/src &&
|
||||||
|
git -C $num/src config core.preloadIndex false &&
|
||||||
|
test_commit -C $num/src initial &&
|
||||||
|
git -C $num/src switch --detach HEAD || return 1
|
||||||
|
done &&
|
||||||
|
|
||||||
|
scalar reconfigure --all &&
|
||||||
|
|
||||||
|
for num in $repos
|
||||||
|
do
|
||||||
|
test true = "$(git -C $num/src config core.preloadIndex)" || return 1
|
||||||
|
done
|
||||||
|
'
|
||||||
|
|
||||||
test_expect_success '`reconfigure -a` removes stale config entries' '
|
test_expect_success '`reconfigure -a` removes stale config entries' '
|
||||||
git init stale/src &&
|
git init stale/src &&
|
||||||
scalar register stale &&
|
scalar register stale &&
|
||||||
|
|
Loading…
Reference in New Issue