Browse Source

Merge branch 'rs/maintenance-run-outside-repo'

"git maintenance run/start/stop" needed to be run in a repository
to hold the lockfile they use, but didn't make sure they are
actually in a repository, which has been corrected.

* rs/maintenance-run-outside-repo:
  t7900: fix typo: "test_execpt_success"
  maintenance: fix SEGFAULT when no repository
maint
Junio C Hamano 4 years ago
parent
commit
f2a75cb312
  1. 7
      builtin/gc.c
  2. 2
      git.c
  3. 8
      t/t7900-maintenance.sh

7
builtin/gc.c

@ -1446,10 +1446,6 @@ static int maintenance_register(void) @@ -1446,10 +1446,6 @@ static int maintenance_register(void)
struct child_process config_set = CHILD_PROCESS_INIT;
struct child_process config_get = CHILD_PROCESS_INIT;

/* There is no current repository, so skip registering it */
if (!the_repository || !the_repository->gitdir)
return 0;

/* Disable foreground maintenance */
git_config_set("maintenance.auto", "false");

@ -1487,9 +1483,6 @@ static int maintenance_unregister(void) @@ -1487,9 +1483,6 @@ static int maintenance_unregister(void)
{
struct child_process config_unset = CHILD_PROCESS_INIT;

if (!the_repository || !the_repository->gitdir)
return error(_("no current repository to unregister"));

config_unset.git_cmd = 1;
strvec_pushl(&config_unset.args, "config", "--global", "--unset",
"--fixed-value", "maintenance.repo",

2
git.c

@ -535,7 +535,7 @@ static struct cmd_struct commands[] = { @@ -535,7 +535,7 @@ static struct cmd_struct commands[] = {
{ "ls-tree", cmd_ls_tree, RUN_SETUP },
{ "mailinfo", cmd_mailinfo, RUN_SETUP_GENTLY | NO_PARSEOPT },
{ "mailsplit", cmd_mailsplit, NO_PARSEOPT },
{ "maintenance", cmd_maintenance, RUN_SETUP_GENTLY | NO_PARSEOPT },
{ "maintenance", cmd_maintenance, RUN_SETUP | NO_PARSEOPT },
{ "merge", cmd_merge, RUN_SETUP | NEED_WORK_TREE },
{ "merge-base", cmd_merge_base, RUN_SETUP },
{ "merge-file", cmd_merge_file, RUN_SETUP_GENTLY },

8
t/t7900-maintenance.sh

@ -455,4 +455,12 @@ test_expect_success 'register preserves existing strategy' ' @@ -455,4 +455,12 @@ test_expect_success 'register preserves existing strategy' '
test_config maintenance.strategy incremental
'

test_expect_success 'fails when running outside of a repository' '
nongit test_must_fail git maintenance run &&
nongit test_must_fail git maintenance stop &&
nongit test_must_fail git maintenance start &&
nongit test_must_fail git maintenance register &&
nongit test_must_fail git maintenance unregister
'

test_done

Loading…
Cancel
Save