summaryrefslogtreecommitdiff
path: root/include/git2/clone.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/git2/clone.h')
-rw-r--r--include/git2/clone.h67
1 files changed, 36 insertions, 31 deletions
diff --git a/include/git2/clone.h b/include/git2/clone.h
index 8de8e0e29..2b5381e4d 100644
--- a/include/git2/clone.h
+++ b/include/git2/clone.h
@@ -23,47 +23,52 @@
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;
+ *
+ * - `bare` should be set to zero to create a standard repo, non-zero for
+ * a bare repo
+ * - `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;
+
+ int bare;
+ git_transfer_progress_callback fetch_progress_cb;
+ void *fetch_progress_payload;
+ git_checkout_opts *checkout_opts;
+} 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.
*
* @param out pointer that will receive the resulting repository object
* @param origin_remote a remote which will act as the initial fetch source
- * @param workdir_path local directory to clone to
- * @param fetch_progress_cb optional callback for fetch progress. Be aware that
- * this is called inline with network and indexing operations, so performance
- * may be affected.
- * @param fetch_progress_payload payload for fetch_progress_cb
- * @param checkout_opts options for the checkout step. If NULL, no checkout
- * is performed
+ * @param local_path local directory to clone to
+ * @param options configuration options for the clone. If NULL, the function
+ * works as though GIT_OPTIONS_INIT were passed.
* @return 0 on success, GIT_ERROR otherwise (use giterr_last for information
* about the error)
*/
GIT_EXTERN(int) git_clone(
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);
-
-/**
- * Create a bare clone of a remote repository.
- *
- * @param out pointer that will receive the resulting repository object
- * @param origin_remote a remote which will act as the initial fetch source
- * @param dest_path local directory to clone to
- * @param fetch_progress_cb optional callback for fetch progress. Be aware that
- * this is called inline with network and indexing operations, so performance
- * may be affected.
- * @param fetch_progress_payload payload for fetch_progress_cb
- * @return 0 on success, GIT_ERROR otherwise (use giterr_last for information about the error)
- */
-GIT_EXTERN(int) git_clone_bare(
- git_repository **out,
- git_remote *origin_remote,
- const char *dest_path,
- git_transfer_progress_callback fetch_progress_cb,
- void *fetch_progress_payload);
+ git_remote *origin,
+ const char *local_path,
+ const git_clone_options *options);
/** @} */
GIT_END_DECL