Commit 7e610440194615fe5970f5f15266893f02a7f6aa

Ben Straub 2012-12-14T12:21:59

Introduce git_clone_options

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.
  *