Skip to content

Commit

Permalink
Merge branch 'nd/gc-aggressive'
Browse files Browse the repository at this point in the history
Allow tweaking the maximum length of the delta-chain produced by
"gc --aggressive".

* nd/gc-aggressive:
  environment.c: fix constness for odb_pack_keep()
  gc --aggressive: make --depth configurable
  • Loading branch information
Junio C Hamano committed Apr 3, 2014
2 parents 7b6bc4d + 8640d49 commit 8815d8a
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 3 deletions.
5 changes: 5 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1156,6 +1156,11 @@ filter.<driver>.smudge::
object to a worktree file upon checkout. See
linkgit:gitattributes[5] for details.

gc.aggressiveDepth::
The depth parameter used in the delta compression
algorithm used by 'git gc --aggressive'. This defaults
to 250.

gc.aggressiveWindow::
The window size parameter used in the delta compression
algorithm used by 'git gc --aggressive'. This defaults
Expand Down
3 changes: 3 additions & 0 deletions Documentation/git-gc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@ the value, the more time is spent optimizing the delta compression. See
the documentation for the --window' option in linkgit:git-repack[1] for
more details. This defaults to 250.

Similarly, the optional configuration variable 'gc.aggressiveDepth'
controls --depth option in linkgit:git-repack[1]. This defaults to 250.

The optional configuration variable 'gc.pruneExpire' controls how old
the unreferenced loose objects have to be before they are pruned. The
default is "2 weeks ago".
Expand Down
8 changes: 7 additions & 1 deletion builtin/gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ static const char * const builtin_gc_usage[] = {
};

static int pack_refs = 1;
static int aggressive_depth = 250;
static int aggressive_window = 250;
static int gc_auto_threshold = 6700;
static int gc_auto_pack_limit = 50;
Expand Down Expand Up @@ -66,6 +67,10 @@ static int gc_config(const char *var, const char *value, void *cb)
aggressive_window = git_config_int(var, value);
return 0;
}
if (!strcmp(var, "gc.aggressivedepth")) {
aggressive_depth = git_config_int(var, value);
return 0;
}
if (!strcmp(var, "gc.auto")) {
gc_auto_threshold = git_config_int(var, value);
return 0;
Expand Down Expand Up @@ -294,7 +299,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix)

if (aggressive) {
argv_array_push(&repack, "-f");
argv_array_push(&repack, "--depth=250");
if (aggressive_depth > 0)
argv_array_pushf(&repack, "--depth=%d", aggressive_depth);
if (aggressive_window > 0)
argv_array_pushf(&repack, "--window=%d", aggressive_window);
}
Expand Down
2 changes: 1 addition & 1 deletion environment.c
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ int odb_mkstemp(char *template, size_t limit, const char *pattern)
return xmkstemp_mode(template, mode);
}

int odb_pack_keep(char *name, size_t namesz, unsigned char *sha1)
int odb_pack_keep(char *name, size_t namesz, const unsigned char *sha1)
{
int fd;

Expand Down
2 changes: 1 addition & 1 deletion git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ extern FILE *xfdopen(int fd, const char *mode);
extern int xmkstemp(char *template);
extern int xmkstemp_mode(char *template, int mode);
extern int odb_mkstemp(char *template, size_t limit, const char *pattern);
extern int odb_pack_keep(char *name, size_t namesz, unsigned char *sha1);
extern int odb_pack_keep(char *name, size_t namesz, const unsigned char *sha1);

static inline size_t xsize_t(off_t len)
{
Expand Down

0 comments on commit 8815d8a

Please sign in to comment.