From 7e610440194615fe5970f5f15266893f02a7f6aa Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Fri, 14 Dec 2012 12:21:59 -0800 Subject: [PATCH] Introduce git_clone_options --- include/git2/clone.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) 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 @@ -22,6 +22,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.