summaryrefslogtreecommitdiff
path: root/include/git2/clone.h
diff options
context:
space:
mode:
authorBen Straub <bs@github.com>2012-12-14 12:21:59 -0800
committerBen Straub <bs@github.com>2012-12-14 12:30:57 -0800
commit7e610440194615fe5970f5f15266893f02a7f6aa (patch)
treeb88d46b27ec634808fddf618ae98be75151bc3d4 /include/git2/clone.h
parent37ac44366bc2a400c993d6b3367bfdd3262e840c (diff)
downloadlibgit2-7e610440194615fe5970f5f15266893f02a7f6aa.tar.gz
Introduce git_clone_options
Diffstat (limited to 'include/git2/clone.h')
-rw-r--r--include/git2/clone.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/git2/clone.h b/include/git2/clone.h
index 8de8e0e29..5dcfeeb0b 100644
--- a/include/git2/clone.h
+++ b/include/git2/clone.h
@@ -23,6 +23,39 @@
GIT_BEGIN_DECL
/**
+ * Clone options structure
+ *
+ * Use zeros to indicate default settings. It's easiest to use the
+ * `GIT_CLONE_OPTIONS_INIT` macro:
+ *
+ * git_clone_options opts = GIT_CLONE_OPTIONS_INIT;
+ *
+ * - `out` is a pointer that receives the resulting repository object
+ * - `origin_remote` is a remote which will act as the initial fetch source
+ * - `workdir_path` is local directory to clone to
+ * - `fetch_progress_cb` is optional callback for fetch progress. Be aware that
+ * this is called inline with network and indexing operations, so performance
+ * may be affected.
+ * - `fetch_progress_payload` is payload for fetch_progress_cb
+ * - `checkout_opts` is options for the checkout step. If NULL, no checkout
+ * is performed
+ */
+
+typedef struct git_clone_options {
+ unsigned int version;
+
+ git_repository **out;
+ git_remote *origin_remote;
+ const char *workdir_path;
+ git_checkout_opts *checkout_opts;
+ git_transfer_progress_callback fetch_progress_cb;
+ void *fetch_progress_payload;
+} git_clone_options;
+
+#define GIT_CLONE_OPTIONS_VERSION 1
+#define GIT_CLONE_OPTIONS_INIT {GIT_CLONE_OPTIONS_VERSION}
+
+/**
* Clone a remote repository, and checkout the branch pointed to by the remote
* HEAD.
*