From 48c3242450fe5fb18e6890812c000ed5c6291a98 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Wed, 27 Dec 2006 01:24:05 -0800 Subject: [PATCH] rerere gc: honor configuration and document it Two configuration to control the expiration of rerere records are introduced and documented. Signed-off-by: Junio C Hamano --- Documentation/config.txt | 10 ++++++++++ Documentation/git-rerere.txt | 8 ++++++-- builtin-rerere.c | 13 +++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index 22482d6a94..4d636267a3 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -192,6 +192,16 @@ format.headers:: Additional email headers to include in a patch to be submitted by mail. See gitlink:git-format-patch[1]. +gc.rerereresolved:: + Records of conflicted merge you resolved earlier are + kept for this many days when `git rerere gc` is run. + The default is 60 days. See gitlink:git-rerere[1]. + +gc.rerereunresolved:: + Records of conflicted merge you have not resolved are + kept for this many days when `git rerere gc` is run. + The default is 15 days. See gitlink:git-rerere[1]. + gitcvs.enabled:: Whether the cvs pserver interface is enabled for this repository. See gitlink:git-cvsserver[1]. diff --git a/Documentation/git-rerere.txt b/Documentation/git-rerere.txt index 116dca4c06..b57a72bdd7 100644 --- a/Documentation/git-rerere.txt +++ b/Documentation/git-rerere.txt @@ -7,7 +7,7 @@ git-rerere - Reuse recorded resolve SYNOPSIS -------- -'git-rerere' [clear|diff|status] +'git-rerere' [clear|diff|status|gc] DESCRIPTION ----------- @@ -55,7 +55,11 @@ for resolutions. 'gc':: This command is used to prune records of conflicted merge that -occurred long time ago. +occurred long time ago. By default, conflicts older than 15 +days that you have not recorded their resolution, and conflicts +older than 60 days, are pruned. These are controlled with +`gc.rerereunresolved` and `gc.rerereresolved` configuration +variables. DISCUSSION diff --git a/builtin-rerere.c b/builtin-rerere.c index d064bd8bf0..7442498dee 100644 --- a/builtin-rerere.c +++ b/builtin-rerere.c @@ -362,6 +362,17 @@ static int do_plain_rerere(struct path_list *rr, int fd) return write_rr(rr, fd); } +static int git_rerere_config(const char *var, const char *value) +{ + if (!strcmp(var, "gc.rerereresolved")) + cutoff_resolve = git_config_int(var, value); + else if (!strcmp(var, "gc.rerereunresolved")) + cutoff_noresolve = git_config_int(var, value); + else + return git_default_config(var, value); + return 0; +} + int cmd_rerere(int argc, const char **argv, const char *prefix) { struct path_list merge_rr = { NULL, 0, 0, 1 }; @@ -371,6 +382,8 @@ int cmd_rerere(int argc, const char **argv, const char *prefix) if (stat(git_path("rr-cache"), &st) || !S_ISDIR(st.st_mode)) return 0; + git_config(git_rerere_config); + merge_rr_path = xstrdup(git_path("rr-cache/MERGE_RR")); fd = hold_lock_file_for_update(&write_lock, merge_rr_path, 1); read_rr(&merge_rr); -- GitLab