Skip to content

Commit

Permalink
Always auto-gc after calling a fast-import transport
Browse files Browse the repository at this point in the history
After importing anything with fast-import, we should always let the
garbage collector do its job, since the objects are written to disk
inefficiently.

This brings down an initial import of http://selenic.com/hg from about
230 megabytes to about 14.

In the future, we may want to make this configurable on a per-remote
basis, or maybe teach fast-import about it in the first place.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Sep 24, 2024
1 parent 0a8e3f5 commit e6653f9
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions transport-helper.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
#include "packfile.h"

static int debug;
/* TODO: put somewhere sensible, e.g. git_transport_options? */
static int auto_gc = 1;

struct helper_data {
char *name;
Expand Down Expand Up @@ -577,6 +579,13 @@ static int fetch_with_import(struct transport *transport,
}
}
strbuf_release(&buf);
if (auto_gc) {
struct child_process cmd = CHILD_PROCESS_INIT;

cmd.git_cmd = 1;
strvec_pushl(&cmd.args, "gc", "--auto", "--quiet", NULL);
run_command(&cmd);
}
return 0;
}

Expand Down

0 comments on commit e6653f9

Please sign in to comment.