These options are simply turned to upload-pack's "subtree" and "commit-tree" requests, respectively. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- builtin/fetch-pack.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index dbd8b7b..0bc7f6d 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -14,6 +14,8 @@ static int transfer_unpack_limit = -1; static int fetch_unpack_limit = -1; static int unpack_limit = 100; static int prefer_ofs_delta = 1; +static const char *subtree; +static int commit_subtree; static struct fetch_pack_args args = { /* .uploadpack = */ "git-upload-pack", }; @@ -237,6 +239,8 @@ static int find_common(int fd[2], unsigned char *result_sha1, for_each_ref(rev_list_insert_ref, NULL); fetching = 0; + if (subtree) + packet_buf_write(&req_buf, "%s %s\n", commit_subtree ? "commit-subtree" : "subtree", subtree); for ( ; refs ; refs = refs->next) { unsigned char *remote = refs->old_sha1; const char *remote_hex; @@ -692,6 +696,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 (subtree && !server_supports("subtree")) + die("Server does not support subtree"); if (server_supports("multi_ack_detailed")) { if (args.verbose) fprintf(stderr, "Server supports multi_ack_detailed\n"); @@ -860,6 +866,15 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) pack_lockfile_ptr = &pack_lockfile; continue; } + if (!prefixcmp(arg, "--subtree=")) { + subtree = arg + 10; + continue; + } + if (!prefixcmp(arg, "--commit-subtree=")) { + subtree = arg + 17; + commit_subtree = 1; + 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