49
git maintenance run --auto 2>/dev/null &&
50
GIT_TRACE2_EVENT="$(pwd)/run-no-quiet.txt" \
51
git maintenance run --no-quiet 2>/dev/null &&
52
+ git maintenance is-needed &&
53
test_subcommand git gc --quiet --no-detach --skip-foreground-tasks <run-no-auto.txt &&
54
+ ! git maintenance is-needed --auto &&
55
test_subcommand ! git gc --auto --quiet --no-detach --skip-foreground-tasks <run-auto.txt &&
56
test_subcommand git gc --no-quiet --no-detach --skip-foreground-tasks <run-no-quiet.txt
57
'
182
183
test_commit first &&
184
185
+ ! git -c maintenance.commit-graph.auto=0 \
186
+ maintenance is-needed --auto --task=commit-graph &&
187
+ git -c maintenance.commit-graph.auto=1 \
188
+ maintenance is-needed --auto --task=commit-graph &&
189
+
190
GIT_TRACE2_EVENT="$(pwd)/cg-zero-means-no.txt" \
191
git -c maintenance.commit-graph.auto=0 $COMMAND &&
192
GIT_TRACE2_EVENT="$(pwd)/cg-one-satisfied.txt" \
297
git -c maintenance.loose-objects.auto=1 maintenance \
298
run --auto --task=loose-objects 2>/dev/null &&
299
test_subcommand ! git prune-packed --quiet <trace-lo1.txt &&
300
+
301
printf data-A | git hash-object -t blob --stdin -w &&
302
+ ! git -c maintenance.loose-objects.auto=2 \
303
+ maintenance is-needed --auto --task=loose-objects &&
304
GIT_TRACE2_EVENT="$(pwd)/trace-loA" \
305
git -c maintenance.loose-objects.auto=2 \
306
maintenance run --auto --task=loose-objects 2>/dev/null &&
307
test_subcommand ! git prune-packed --quiet <trace-loA &&
308
+
309
printf data-B | git hash-object -t blob --stdin -w &&
310
+ git -c maintenance.loose-objects.auto=2 \
311
+ maintenance is-needed --auto --task=loose-objects &&
312
GIT_TRACE2_EVENT="$(pwd)/trace-loB" \
313
git -c maintenance.loose-objects.auto=2 \
314
maintenance run --auto --task=loose-objects 2>/dev/null &&
315
test_subcommand git prune-packed --quiet <trace-loB &&
316
+
317
GIT_TRACE2_EVENT="$(pwd)/trace-loC" \
318
git -c maintenance.loose-objects.auto=2 \
319
maintenance run --auto --task=loose-objects 2>/dev/null &&
435
test_commit A &&
436
git repack -adk &&
437
git multi-pack-index write &&
438
+ ! git -c maintenance.incremental-repack.auto=1 \
439
+ maintenance is-needed --auto --task=incremental-repack &&
440
GIT_TRACE2_EVENT="$(pwd)/midx-init.txt" git \
441
-c maintenance.incremental-repack.auto=1 \
442
maintenance run --auto --task=incremental-repack 2>/dev/null &&
443
test_subcommand ! git multi-pack-index write --no-progress <midx-init.txt &&
444
+
445
test_commit B &&
446
git pack-objects --revs .git/objects/pack/pack <<-\EOF &&
447
HEAD
451
-c maintenance.incremental-repack.auto=2 \
452
maintenance run --auto --task=incremental-repack 2>/dev/null &&
453
test_subcommand ! git multi-pack-index write --no-progress <trace-A &&
454
+
455
test_commit C &&
456
git pack-objects --revs .git/objects/pack/pack <<-\EOF &&
457
HEAD
458
^HEAD~1
459
EOF
460
+ git -c maintenance.incremental-repack.auto=2 \
461
+ maintenance is-needed --auto --task=incremental-repack &&
462
GIT_TRACE2_EVENT=$(pwd)/trace-B git \
463
-c maintenance.incremental-repack.auto=2 \
464
maintenance run --auto --task=incremental-repack 2>/dev/null &&
505
git reflog expire --all --expire=now &&
506
test_commit reflog-one &&
507
test_commit reflog-two &&
508
+
509
+ ! git -c maintenance.reflog-expire.auto=3 \
510
+ maintenance is-needed --auto --task=reflog-expire &&
511
GIT_TRACE2_EVENT="$(pwd)/reflog-expire-auto.txt" \
512
git -c maintenance.reflog-expire.auto=3 maintenance run --auto --task=reflog-expire &&
513
test_subcommand ! git reflog expire --all <reflog-expire-auto.txt &&
514
+
515
+ git -c maintenance.reflog-expire.auto=2 \
516
+ maintenance is-needed --auto --task=reflog-expire &&
517
GIT_TRACE2_EVENT="$(pwd)/reflog-expire-auto.txt" \
518
git -c maintenance.reflog-expire.auto=2 maintenance run --auto --task=reflog-expire &&
519
test_subcommand git reflog expire --all <reflog-expire-auto.txt
540
test_expect_worktree_prune ! git maintenance run --auto --task=worktree-prune &&
541
mkdir .git/worktrees &&
542
: >.git/worktrees/abc &&
543
+ git maintenance is-needed --auto --task=worktree-prune &&
544
test_expect_worktree_prune git maintenance run --auto --task=worktree-prune
545
'
546
557
test_expect_worktree_prune ! git -c maintenance.worktree-prune.auto=0 maintenance run --auto --task=worktree-prune &&
558
# A positive value should require at least this many prunable worktrees.
559
test_expect_worktree_prune ! git -c maintenance.worktree-prune.auto=4 maintenance run --auto --task=worktree-prune &&
533
- test_expect_worktree_prune git -c maintenance.worktree-prune.auto=3 maintenance run --auto --task=worktree-prune
534
-'
535
-
536
-test_expect_success 'worktree-prune task with --auto honors maintenance.worktree-prune.auto' '
537
- # A negative value should always prune.
538
- test_expect_worktree_prune git -c maintenance.worktree-prune.auto=-1 maintenance run --auto --task=worktree-prune &&
539
-
540
- mkdir .git/worktrees &&
541
- : >.git/worktrees/first &&
542
- : >.git/worktrees/second &&
543
- : >.git/worktrees/third &&
544
-
545
- # Zero should never prune.
546
- test_expect_worktree_prune ! git -c maintenance.worktree-prune.auto=0 maintenance run --auto --task=worktree-prune &&
547
- # A positive value should require at least this many prunable worktrees.
548
- test_expect_worktree_prune ! git -c maintenance.worktree-prune.auto=4 maintenance run --auto --task=worktree-prune &&
560
+ git -c maintenance.worktree-prune.auto=3 maintenance is-needed --auto --task=worktree-prune &&
561
test_expect_worktree_prune git -c maintenance.worktree-prune.auto=3 maintenance run --auto --task=worktree-prune
562
'
563
566
rm -rf worktree &&
567
568
rm -f worktree-prune.txt &&
569
+ ! git -c gc.worktreePruneExpire=1.week.ago maintenance is-needed --auto --task=worktree-prune &&
570
GIT_TRACE2_EVENT="$(pwd)/worktree-prune.txt" git -c gc.worktreePruneExpire=1.week.ago maintenance run --auto --task=worktree-prune &&
571
test_subcommand ! git worktree prune --expire 1.week.ago <worktree-prune.txt &&
572
test_path_is_dir .git/worktrees/worktree &&
573
574
rm -f worktree-prune.txt &&
575
+ git -c gc.worktreePruneExpire=now maintenance is-needed --auto --task=worktree-prune &&
576
GIT_TRACE2_EVENT="$(pwd)/worktree-prune.txt" git -c gc.worktreePruneExpire=now maintenance run --auto --task=worktree-prune &&
577
test_subcommand git worktree prune --expire now <worktree-prune.txt &&
578
test_path_is_missing .git/worktrees/worktree
597
598
test_expect_success 'rerere-gc task with --auto only prunes with prunable entries' '
599
test_when_finished "rm -rf .git/rr-cache" &&
600
+ ! git maintenance is-needed --auto --task=rerere-gc &&
601
test_expect_rerere_gc ! git maintenance run --auto --task=rerere-gc &&
602
mkdir .git/rr-cache &&
603
+ ! git maintenance is-needed --auto --task=rerere-gc &&
604
test_expect_rerere_gc ! git maintenance run --auto --task=rerere-gc &&
605
: >.git/rr-cache/entry &&
606
+ git maintenance is-needed --auto --task=rerere-gc &&
607
test_expect_rerere_gc git maintenance run --auto --task=rerere-gc
608
'
609
611
test_when_finished "rm -rf .git/rr-cache" &&
612
613
# A negative value should always prune.
614
+ git -c maintenance.rerere-gc.auto=-1 maintenance is-needed --auto --task=rerere-gc &&
615
test_expect_rerere_gc git -c maintenance.rerere-gc.auto=-1 maintenance run --auto --task=rerere-gc &&
616
617
# A positive value prunes when there is at least one entry.
618
+ ! git -c maintenance.rerere-gc.auto=9000 maintenance is-needed --auto --task=rerere-gc &&
619
test_expect_rerere_gc ! git -c maintenance.rerere-gc.auto=9000 maintenance run --auto --task=rerere-gc &&
620
mkdir .git/rr-cache &&
621
+ ! git -c maintenance.rerere-gc.auto=9000 maintenance is-needed --auto --task=rerere-gc &&
622
test_expect_rerere_gc ! git -c maintenance.rerere-gc.auto=9000 maintenance run --auto --task=rerere-gc &&
623
: >.git/rr-cache/entry-1 &&
624
+ git -c maintenance.rerere-gc.auto=9000 maintenance is-needed --auto --task=rerere-gc &&
625
test_expect_rerere_gc git -c maintenance.rerere-gc.auto=9000 maintenance run --auto --task=rerere-gc &&
626
627
# Zero should never prune.
628
: >.git/rr-cache/entry-1 &&
629
+ ! git -c maintenance.rerere-gc.auto=0 maintenance is-needed --auto --task=rerere-gc &&
630
test_expect_rerere_gc ! git -c maintenance.rerere-gc.auto=0 maintenance run --auto --task=rerere-gc
631
'
632