[PATCH 10/16] clone: support subtree clone with parameter --subtree
With all the preparation work, here comes --subtree. So clone away!
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
builtin/clone.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index efb1e6f..43bc34b 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -23,6 +23,7 @@
#include "branch.h"
#include "remote.h"
#include "run-command.h"
+#include "subtree.h"
/*
* Overall FIXMEs:
@@ -78,6 +79,8 @@ static struct option builtin_clone_options[] = {
"path to git-upload-pack on the remote"),
OPT_STRING(0, "depth", &option_depth, "depth",
"create a shallow clone of that depth"),
+ OPT_STRING(0, "subtree", &core_subtree, "subtree",
+ "subtree clone"),
OPT_END()
};
@@ -515,6 +518,8 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
strbuf_reset(&value);
if (path && !is_bundle) {
+ if (core_subtree)
+ die("Local subtree clone does not work (now)");
refs = clone_local(path, git_dir);
mapped_refs = wanted_peer_refs(refs, refspec);
} else {
@@ -623,6 +628,11 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
transport_disconnect(transport);
}
+ if (core_subtree) {
+ git_config_set("core.subtree", core_subtree);
+ subtree_import();
+ }
+
if (!option_no_checkout) {
struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
struct unpack_trees_options opts;
--
1.7.1.rc1.69.g24c2f7