this allows creating packs that contain only the blobs relevant to a specific subdirectory, e.g. echo HEAD | git pack-objects --revs --sparse-prefix=/contrib/ will create a pack containing the complete history of HEAD, including all commits, all trees, and the files in the contrib directory. Signed-off-by: Robin Ruede <r.ruede@xxxxxxxxx> --- builtin/pack-objects.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index a2f8cfd..0674f57 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -2621,6 +2621,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) struct argv_array rp = ARGV_ARRAY_INIT; int rev_list_unpacked = 0, rev_list_all = 0, rev_list_reflog = 0; int rev_list_index = 0; + const char *sparse_prefix = NULL; + struct option pack_objects_options[] = { OPT_SET_INT('q', "quiet", &progress, N_("do not show progress meter"), 0), @@ -2685,6 +2687,8 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) N_("create thin packs")), OPT_BOOL(0, "shallow", &shallow, N_("create packs suitable for shallow fetches")), + OPT_STRING(0, "sparse-prefix", &sparse_prefix, N_("path"), + N_("only include blobs relevant for sparse checkout (implies --revs)")), OPT_BOOL(0, "honor-pack-keep", &ignore_packed_keep, N_("ignore packs that have companion .keep file")), OPT_INTEGER(0, "compression", &pack_compression_level, @@ -2725,6 +2729,13 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) } else argv_array_push(&rp, "--objects"); + if (sparse_prefix) { + use_internal_rev_list = 1; + // with bitmaps the path of the blobs is not known + use_bitmap_index = 0; + argv_array_push(&rp, "--sparse-prefix"); + argv_array_push(&rp, sparse_prefix); + } if (rev_list_all) { use_internal_rev_list = 1; argv_array_push(&rp, "--all"); -- 2.9.1.283.g3ca5b4c.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html