This options requires narrow-tree capability from upload-pack. It simply sends narrow-tree line from argument to to upload-pack. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- builtin/fetch-pack.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index dbd8b7b..821b713 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -37,6 +37,7 @@ static int marked; static struct commit_list *rev_list; static int non_common_revs, multi_ack, use_sideband; +const char *narrow_prefix; static void rev_list_push(struct commit *commit, int mark) { @@ -237,6 +238,10 @@ static int find_common(int fd[2], unsigned char *result_sha1, for_each_ref(rev_list_insert_ref, NULL); fetching = 0; + if (get_narrow_prefix() && !narrow_prefix) + narrow_prefix = get_narrow_prefix(); + if (narrow_prefix) + packet_buf_write(&req_buf, "narrow-tree %s\n", narrow_prefix); for ( ; refs ; refs = refs->next) { unsigned char *remote = refs->old_sha1; const char *remote_hex; @@ -692,6 +697,8 @@ static struct ref *do_fetch_pack(int fd[2], if (is_repository_shallow() && !server_supports("shallow")) die("Server does not support shallow clients"); + if (narrow_prefix && !server_supports("narrow-tree")) + die("Server does not support narrow-tree"); if (server_supports("multi_ack_detailed")) { if (args.verbose) fprintf(stderr, "Server supports multi_ack_detailed\n"); @@ -860,6 +867,10 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) pack_lockfile_ptr = &pack_lockfile; continue; } + if (!prefixcmp(arg, "--narrow-tree=")) { + narrow_prefix = arg + 14; + continue; + } usage(fetch_pack_usage); } dest = (char *)arg; -- 1.7.1.rc1.69.g24c2f7 -- 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