diff options
-rw-r--r-- | Documentation/config.txt | 10 | ||||
-rw-r--r-- | Documentation/git-rerere.txt | 8 | ||||
-rw-r--r-- | builtin-rerere.c | 13 |
3 files changed, 29 insertions, 2 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt index 22482d6a9..4d636267a 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 116dca4c0..b57a72bdd 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 d064bd8bf..7442498de 100644 --- a/builtin-rerere.c +++ b/builtin-rerere.c @@ -362,6 +362,17 @@ tail_optimization: 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); |