Merge branch 'tb/repack-write-midx'
"git repack" has been taught to generate multi-pack reachability bitmaps. * tb/repack-write-midx: test-read-midx: fix leak of bitmap_index struct builtin/repack.c: pass `--refs-snapshot` when writing bitmaps builtin/repack.c: make largest pack preferred builtin/repack.c: support writing a MIDX while repacking builtin/repack.c: extract showing progress to a variable builtin/repack.c: rename variables that deal with non-kept packs builtin/repack.c: keep track of existing packs unconditionally midx: preliminary support for `--refs-snapshot` builtin/multi-pack-index.c: support `--stdin-packs` mode midx: expose `write_midx_file_only()` publicly
This commit is contained in:
@@ -7,7 +7,8 @@
|
||||
#include "object-store.h"
|
||||
|
||||
#define BUILTIN_MIDX_WRITE_USAGE \
|
||||
N_("git multi-pack-index [<options>] write [--preferred-pack=<pack>]")
|
||||
N_("git multi-pack-index [<options>] write [--preferred-pack=<pack>]" \
|
||||
"[--refs-snapshot=<path>]")
|
||||
|
||||
#define BUILTIN_MIDX_VERIFY_USAGE \
|
||||
N_("git multi-pack-index [<options>] verify")
|
||||
@@ -45,8 +46,10 @@ static char const * const builtin_multi_pack_index_usage[] = {
|
||||
static struct opts_multi_pack_index {
|
||||
const char *object_dir;
|
||||
const char *preferred_pack;
|
||||
const char *refs_snapshot;
|
||||
unsigned long batch_size;
|
||||
unsigned flags;
|
||||
int stdin_packs;
|
||||
} opts;
|
||||
|
||||
static struct option common_opts[] = {
|
||||
@@ -77,6 +80,16 @@ static int git_multi_pack_index_write_config(const char *var, const char *value,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void read_packs_from_stdin(struct string_list *to)
|
||||
{
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
while (strbuf_getline(&buf, stdin) != EOF)
|
||||
string_list_append(to, buf.buf);
|
||||
string_list_sort(to);
|
||||
|
||||
strbuf_release(&buf);
|
||||
}
|
||||
|
||||
static int cmd_multi_pack_index_write(int argc, const char **argv)
|
||||
{
|
||||
struct option *options;
|
||||
@@ -88,6 +101,10 @@ static int cmd_multi_pack_index_write(int argc, const char **argv)
|
||||
MIDX_WRITE_BITMAP | MIDX_WRITE_REV_INDEX),
|
||||
OPT_BIT(0, "progress", &opts.flags,
|
||||
N_("force progress reporting"), MIDX_PROGRESS),
|
||||
OPT_BOOL(0, "stdin-packs", &opts.stdin_packs,
|
||||
N_("write multi-pack index containing only given indexes")),
|
||||
OPT_FILENAME(0, "refs-snapshot", &opts.refs_snapshot,
|
||||
N_("refs snapshot for selecting bitmap commits")),
|
||||
OPT_END(),
|
||||
};
|
||||
|
||||
@@ -110,8 +127,23 @@ static int cmd_multi_pack_index_write(int argc, const char **argv)
|
||||
|
||||
FREE_AND_NULL(options);
|
||||
|
||||
if (opts.stdin_packs) {
|
||||
struct string_list packs = STRING_LIST_INIT_DUP;
|
||||
int ret;
|
||||
|
||||
read_packs_from_stdin(&packs);
|
||||
|
||||
ret = write_midx_file_only(opts.object_dir, &packs,
|
||||
opts.preferred_pack,
|
||||
opts.refs_snapshot, opts.flags);
|
||||
|
||||
string_list_clear(&packs, 0);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
return write_midx_file(opts.object_dir, opts.preferred_pack,
|
||||
opts.flags);
|
||||
opts.refs_snapshot, opts.flags);
|
||||
}
|
||||
|
||||
static int cmd_multi_pack_index_verify(int argc, const char **argv)
|
||||
|
||||
Reference in New Issue
Block a user