]> git.ipfire.org Git - thirdparty/git.git/commitdiff
maintenance: fix launchctl calendar intervals
authorJosh Heinrichs <joshiheinrichs@gmail.com>
Mon, 21 Apr 2025 05:46:33 +0000 (23:46 -0600)
committerJunio C Hamano <gitster@pobox.com>
Wed, 23 Apr 2025 19:58:52 +0000 (12:58 -0700)
When using the launchctl scheduler, the weekly job runs daily, and the
daily job runs on the first six days of each month. This appears to be
due to specifying "Day" in the calendar intervals, which according to
launchd.plist(5) is for specifying days of the month rather than days of
the week. The behaviour of running a job on the 0th day is undocumented,
but in my testing appears to be the same as not specifying "Day" in the
calendar interval, in which case the job will run daily.

Use "Weekday" in the calendar intervals, which is the correct way to
schedule jobs to run on specific days of the week.

Signed-off-by: Josh Heinrichs <joshiheinrichs@gmail.com>
Acked-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c

index a9b1c36de27da2ffb16aaa45e979cbaeec18bfa1..af1665a9434794cd07b2a4e8b84430a683c1a3eb 100644 (file)
@@ -2061,7 +2061,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
 
        case SCHEDULE_DAILY:
                repeat = "<dict>\n"
-                        "<key>Day</key><integer>%d</integer>\n"
+                        "<key>Weekday</key><integer>%d</integer>\n"
                         "<key>Hour</key><integer>0</integer>\n"
                         "<key>Minute</key><integer>%d</integer>\n"
                         "</dict>\n";
@@ -2072,7 +2072,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
        case SCHEDULE_WEEKLY:
                strbuf_addf(&plist,
                            "<dict>\n"
-                           "<key>Day</key><integer>0</integer>\n"
+                           "<key>Weekday</key><integer>0</integer>\n"
                            "<key>Hour</key><integer>0</integer>\n"
                            "<key>Minute</key><integer>%d</integer>\n"
                            "</dict>\n",