diff options
-rw-r--r-- | Documentation/git-maintenance.txt | 2 | ||||
-rw-r--r-- | builtin/gc.c | 7 | ||||
-rwxr-xr-x | t/t7900-maintenance.sh | 16 |
3 files changed, 20 insertions, 5 deletions
diff --git a/Documentation/git-maintenance.txt b/Documentation/git-maintenance.txt index 6fec1eb8dc..d1f9b5172d 100644 --- a/Documentation/git-maintenance.txt +++ b/Documentation/git-maintenance.txt @@ -101,7 +101,7 @@ This is done to avoid disrupting the remote-tracking branches. The end users expect these refs to stay unmoved unless they initiate a fetch. With prefetch task, however, the objects necessary to complete a later real fetch would already be obtained, so the real fetch would go faster. In the ideal case, -it will just become an update to bunch of remote-tracking branches without +it will just become an update to a bunch of remote-tracking branches without any object transfer. gc:: diff --git a/builtin/gc.c b/builtin/gc.c index b57fda4924..4c24f41852 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -1554,11 +1554,10 @@ static int update_background_schedule(int run_maintenance) while (!strbuf_getline_lf(&line, cron_list)) { if (!in_old_region && !strcmp(line.buf, BEGIN_LINE)) in_old_region = 1; - if (in_old_region) - continue; - fprintf(cron_in, "%s\n", line.buf); - if (in_old_region && !strcmp(line.buf, END_LINE)) + else if (in_old_region && !strcmp(line.buf, END_LINE)) in_old_region = 0; + else if (!in_old_region) + fprintf(cron_in, "%s\n", line.buf); } if (run_maintenance) { diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh index d1e0c8f830..99bf0c7582 100755 --- a/t/t7900-maintenance.sh +++ b/t/t7900-maintenance.sh @@ -446,6 +446,22 @@ test_expect_success 'start preserves existing schedule' ' grep "Important information!" cron.txt ' +test_expect_success 'magic markers are correct' ' + grep "GIT MAINTENANCE SCHEDULE" cron.txt >actual && + cat >expect <<-\EOF && + # BEGIN GIT MAINTENANCE SCHEDULE + # END GIT MAINTENANCE SCHEDULE + EOF + test_cmp actual expect +' + +test_expect_success 'stop preserves surrounding schedule' ' + echo "Crucial information!" >>cron.txt && + GIT_TEST_CRONTAB="test-tool crontab cron.txt" git maintenance stop && + grep "Important information!" cron.txt && + grep "Crucial information!" cron.txt +' + test_expect_success 'register preserves existing strategy' ' git config maintenance.strategy none && git maintenance register && |