maintenance: fix launchctl calendar intervals

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>

Josh Heinrichs committed Apr 20, 2025 at 23:46 UTC eb2d7beb0e5e3823a9271a65eeeaed74a0144e2a
1 file changed +2 -2
builtin/gc.c
+2 -2
@@ -2061,7 +2061,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
2061
2062 case SCHEDULE_DAILY:
2063 repeat = "<dict>\n"
2064 - "<key>Day</key><integer>%d</integer>\n"
2064 + "<key>Weekday</key><integer>%d</integer>\n"
2065 "<key>Hour</key><integer>0</integer>\n"
2066 "<key>Minute</key><integer>%d</integer>\n"
2067 "</dict>\n";
@@ -2072,7 +2072,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
2072 case SCHEDULE_WEEKLY:
2073 strbuf_addf(&plist,
2074 "<dict>\n"
2075 - "<key>Day</key><integer>0</integer>\n"
2075 + "<key>Weekday</key><integer>0</integer>\n"
2076 "<key>Hour</key><integer>0</integer>\n"
2077 "<key>Minute</key><integer>%d</integer>\n"
2078 "</dict>\n",