Browse Source

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>
maint
Junio C Hamano 18 years ago
parent
commit
48c3242450
  1. 10
      Documentation/config.txt
  2. 8
      Documentation/git-rerere.txt
  3. 13
      builtin-rerere.c

10
Documentation/config.txt

@ -192,6 +192,16 @@ format.headers:: @@ -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].

8
Documentation/git-rerere.txt

@ -7,7 +7,7 @@ git-rerere - Reuse recorded resolve @@ -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. @@ -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

13
builtin-rerere.c

@ -362,6 +362,17 @@ tail_optimization: @@ -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) @@ -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);

Loading…
Cancel
Save