Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- builtin/commit-tree.c | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-) diff --git a/builtin/commit-tree.c b/builtin/commit-tree.c index 87f0591..0c71925 100644 --- a/builtin/commit-tree.c +++ b/builtin/commit-tree.c @@ -32,11 +32,29 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix) unsigned char tree_sha1[20]; unsigned char commit_sha1[20]; struct strbuf buffer = STRBUF_INIT; + unsigned char narrow_base[20]; git_config(git_default_config, NULL); if (argc < 2 || !strcmp(argv[1], "-h")) usage(commit_tree_usage); + + if (get_narrow_prefix()) { + unsigned char sha1[20]; + unsigned long size; + void *buf; + + if (prefixcmp(argv[1], "--narrow-base=")) + die("--narrow-base required in narrow mode"); + if (get_sha1(argv[1]+4, sha1)) + die("Invalid SHA1"); + buf = read_object_with_reference(sha1, tree_type, &size, narrow_base); + if (!buf) + die("Bad treeish %s", sha1_to_hex(sha1)); + free(buf); + argv++; + } + if (get_sha1(argv[1], tree_sha1)) die("Not a valid object name %s", argv[1]); @@ -56,7 +74,7 @@ int cmd_commit_tree(int argc, const char **argv, const char *prefix) if (strbuf_read(&buffer, 0, 0) < 0) die_errno("git commit-tree: failed to read"); - if (!commit_tree(buffer.buf, tree_sha1, parents, commit_sha1, NULL)) { + if (!commit_narrow_tree(buffer.buf, tree_sha1, narrow_base, parents, commit_sha1, NULL)) { printf("%s\n", sha1_to_hex(commit_sha1)); return 0; } -- 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