Introduce git_clone_options
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
diff --git a/include/git2/clone.h b/include/git2/clone.h
index 8de8e0e..5dcfeeb 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.
*