mirror of
https://github.com/git/git
synced 2024-10-30 14:03:28 +00:00
maintenance: swap method locations
The systemd_timer_write_unit_templates() method writes a single template that is then used to start the hourly, daily, and weekly schedules with systemd. However, in order to schedule systemd maintenance on a given minute, these templates need to be replaced with specific schedules for each of these jobs. Before modifying the schedules, move the writing method above the systemd_timer_enable_unit() method, so we can write a specific schedule for each unit. The diff is computed smaller by showing systemd_timer_enable_unit() and systemd_timer_delete_units() move instead of systemd_timer_write_unit_templates() and systemd_timer_delete_unit_templates(). Signed-off-by: Derrick Stolee <derrickstolee@github.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9b43399057
commit
f44d7d00e5
1 changed files with 48 additions and 48 deletions
96
builtin/gc.c
96
builtin/gc.c
|
@ -2292,46 +2292,6 @@ static char *xdg_config_home_systemd(const char *filename)
|
|||
return xdg_config_home_for("systemd/user", filename);
|
||||
}
|
||||
|
||||
static int systemd_timer_enable_unit(int enable,
|
||||
enum schedule_priority schedule)
|
||||
{
|
||||
const char *cmd = "systemctl";
|
||||
struct child_process child = CHILD_PROCESS_INIT;
|
||||
const char *frequency = get_frequency(schedule);
|
||||
|
||||
/*
|
||||
* Disabling the systemd unit while it is already disabled makes
|
||||
* systemctl print an error.
|
||||
* Let's ignore it since it means we already are in the expected state:
|
||||
* the unit is disabled.
|
||||
*
|
||||
* On the other hand, enabling a systemd unit which is already enabled
|
||||
* produces no error.
|
||||
*/
|
||||
if (!enable)
|
||||
child.no_stderr = 1;
|
||||
|
||||
get_schedule_cmd(&cmd, NULL);
|
||||
strvec_split(&child.args, cmd);
|
||||
strvec_pushl(&child.args, "--user", enable ? "enable" : "disable",
|
||||
"--now", NULL);
|
||||
strvec_pushf(&child.args, "git-maintenance@%s.timer", frequency);
|
||||
|
||||
if (start_command(&child))
|
||||
return error(_("failed to start systemctl"));
|
||||
if (finish_command(&child))
|
||||
/*
|
||||
* Disabling an already disabled systemd unit makes
|
||||
* systemctl fail.
|
||||
* Let's ignore this failure.
|
||||
*
|
||||
* Enabling an enabled systemd unit doesn't fail.
|
||||
*/
|
||||
if (enable)
|
||||
return error(_("failed to run systemctl"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int systemd_timer_delete_unit_templates(void)
|
||||
{
|
||||
int ret = 0;
|
||||
|
@ -2348,14 +2308,6 @@ static int systemd_timer_delete_unit_templates(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int systemd_timer_delete_units(void)
|
||||
{
|
||||
return systemd_timer_enable_unit(0, SCHEDULE_HOURLY) ||
|
||||
systemd_timer_enable_unit(0, SCHEDULE_DAILY) ||
|
||||
systemd_timer_enable_unit(0, SCHEDULE_WEEKLY) ||
|
||||
systemd_timer_delete_unit_templates();
|
||||
}
|
||||
|
||||
static int systemd_timer_write_unit_templates(const char *exec_path)
|
||||
{
|
||||
char *filename;
|
||||
|
@ -2437,6 +2389,54 @@ static int systemd_timer_write_unit_templates(const char *exec_path)
|
|||
return -1;
|
||||
}
|
||||
|
||||
static int systemd_timer_enable_unit(int enable,
|
||||
enum schedule_priority schedule)
|
||||
{
|
||||
const char *cmd = "systemctl";
|
||||
struct child_process child = CHILD_PROCESS_INIT;
|
||||
const char *frequency = get_frequency(schedule);
|
||||
|
||||
/*
|
||||
* Disabling the systemd unit while it is already disabled makes
|
||||
* systemctl print an error.
|
||||
* Let's ignore it since it means we already are in the expected state:
|
||||
* the unit is disabled.
|
||||
*
|
||||
* On the other hand, enabling a systemd unit which is already enabled
|
||||
* produces no error.
|
||||
*/
|
||||
if (!enable)
|
||||
child.no_stderr = 1;
|
||||
|
||||
get_schedule_cmd(&cmd, NULL);
|
||||
strvec_split(&child.args, cmd);
|
||||
strvec_pushl(&child.args, "--user", enable ? "enable" : "disable",
|
||||
"--now", NULL);
|
||||
strvec_pushf(&child.args, "git-maintenance@%s.timer", frequency);
|
||||
|
||||
if (start_command(&child))
|
||||
return error(_("failed to start systemctl"));
|
||||
if (finish_command(&child))
|
||||
/*
|
||||
* Disabling an already disabled systemd unit makes
|
||||
* systemctl fail.
|
||||
* Let's ignore this failure.
|
||||
*
|
||||
* Enabling an enabled systemd unit doesn't fail.
|
||||
*/
|
||||
if (enable)
|
||||
return error(_("failed to run systemctl"));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int systemd_timer_delete_units(void)
|
||||
{
|
||||
return systemd_timer_enable_unit(0, SCHEDULE_HOURLY) ||
|
||||
systemd_timer_enable_unit(0, SCHEDULE_DAILY) ||
|
||||
systemd_timer_enable_unit(0, SCHEDULE_WEEKLY) ||
|
||||
systemd_timer_delete_unit_templates();
|
||||
}
|
||||
|
||||
static int systemd_timer_setup_units(void)
|
||||
{
|
||||
const char *exec_path = git_exec_path();
|
||||
|
|
Loading…
Reference in a new issue