Always auto-gc after calling a fast-import transport

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>
This commit is contained in:
Johannes Schindelin 2012-04-09 13:04:35 -05:00
Родитель 6c34ec79dc
Коммит da2231ae1c
1 изменённых файлов: 8 добавлений и 0 удалений

Просмотреть файл

@ -16,6 +16,8 @@
#include "protocol.h" #include "protocol.h"
static int debug; static int debug;
/* TODO: put somewhere sensible, e.g. git_transport_options? */
static int auto_gc = 1;
struct helper_data { struct helper_data {
const char *name; const char *name;
@ -567,6 +569,12 @@ static int fetch_with_import(struct transport *transport,
} }
} }
strbuf_release(&buf); strbuf_release(&buf);
if (auto_gc) {
const char *argv_gc_auto[] = {
"gc", "--auto", "--quiet", NULL,
};
run_command_v_opt(argv_gc_auto, RUN_GIT_CMD);
}
return 0; return 0;
} }