From: Junio C Hamano Date: Tue, 13 Jul 2010 00:40:11 GMT Subject: Re: [PATCH 2/2] rerere: fix overeager gc Message-ID: <7v630k6wpg.fsf@alter.siamese.dyndns.org> In-Reply-To: <1278978124-3035-2-git-send-email-szeder@ira.uka.de> SZEDER Gábor writes: > '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. Thanks. > +static time_t rerere_last_used_at(const char *name) > +{ > + struct stat st; > + return stat(rerere_path(name, "postimage"), &st) ? (time_t) 0 : st.st_mtime; > +} Doesn't has_rerere_resolution() already do a stat on this path? There are only two allers of the function so it would probably make sense to pass a pointer to struct stat from the caller to avoid one extra call to stat.