gc --auto: do not lock refs in the background
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sun, 25 May 2014 00:38:29 +0000 (07:38 +0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 27 May 2014 19:33:53 +0000 (12:33 -0700)
commit62aad1849f3009d1e6c7126a321e5515c1543dc3
tree82fa560c984a543c4c9ccf103969e2c942ac8c9e
parent9f673f9477c63433aa0774c11b9e42979721f4d6
gc --auto: do not lock refs in the background

9f673f9 (gc: config option for running --auto in background -
2014-02-08) puts "gc --auto" in background to reduce user's wait
time. Part of the garbage collecting is pack-refs and pruning
reflogs. These require locking some refs and may abort other processes
trying to lock the same ref. If gc --auto is fired in the middle of a
script, gc's holding locks in the background could fail the script,
which could never happen before 9f673f9.

Keep running pack-refs and "reflog --prune" in foreground to stop
parallel ref updates. The remaining background operations (repack,
prune and rerere) should not impact running git processes.

Reported-by: Adam Borowski <kilobyte@angband.pl>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/gc.c