aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-12-27 01:24:05 -0800
committerJunio C Hamano <junkio@cox.net>2006-12-27 01:33:24 -0800
commit48c3242450fe5fb18e6890812c000ed5c6291a98 (patch)
treeb8325ffabcccbdc389395e1b6e828c77d1029362
parentae72f685418b79bbd67e1017c5b1ac7d731c042e (diff)
downloadgit-48c3242450fe5fb18e6890812c000ed5c6291a98.tar.gz
git-48c3242450fe5fb18e6890812c000ed5c6291a98.tar.xz
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 <junkio@cox.net>
-rw-r--r--Documentation/config.txt10
-rw-r--r--Documentation/git-rerere.txt8
-rw-r--r--builtin-rerere.c13
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);