rerere: fix overeager gc
authorSZEDER Gábor <szeder@ira.uka.de>
Mon, 12 Jul 2010 23:42:04 +0000 (01:42 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 14 Jul 2010 16:26:57 +0000 (09:26 -0700)
commit7d7ff15b39abfa9e73b6475f189006a74dc26376
tree2607517d6a25a30d2163148b8d4bf9cf1722069f
parentded2d47668c8e865465a7ad69665696f9b56f24b
rerere: fix overeager gc

'rerere gc' prunes resolutions of conflicted merges that occurred long
time ago, and when doing so it takes the creation time of the
conflicted automerge results into account.  This can cause the loss of
frequently used conflict resolutions (e.g. long-living topic branches
are merged into a regularly rebuilt integration branch (think of git's
pu)) when they become old enough to exceed 'rerere gc's threshold.

To prevent the loss of valuable merge resolutions 'rerere' will (1)
update the timestamp of the recorded conflict resolution (i.e.
'postimage') each time when encountering and resolving the same merge
conflict, and (2) take this timestamp, i.e. the time of the last usage
into account when gc'ing.

Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/rerere.c
rerere.c
t/t4200-rerere.sh