diff options
| author | Vicent Marti <vicent@github.com> | 2014-05-29 14:50:57 +0200 |
|---|---|---|
| committer | Vicent Marti <vicent@github.com> | 2014-05-29 14:50:57 +0200 |
| commit | 31c551528b3f3bc7bd1d944ed582fc7a379806c6 (patch) | |
| tree | 76e857c2908c710ba61d8ecdf7d5b604f73a8802 /include/git2 | |
| parent | 065a00e2c93087353741a95cfd4a1bf40df954c4 (diff) | |
| parent | bc9f67fa8524a8bcf343af6a721f57b52334810b (diff) | |
| download | libgit2-31c551528b3f3bc7bd1d944ed582fc7a379806c6.tar.gz | |
Merge pull request #2011 from libgit2/cmn/clone-local
Local clone
Diffstat (limited to 'include/git2')
| -rw-r--r-- | include/git2/clone.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/include/git2/clone.h b/include/git2/clone.h index 985c04bf6..b2c944a78 100644 --- a/include/git2/clone.h +++ b/include/git2/clone.h @@ -23,6 +23,13 @@ */ GIT_BEGIN_DECL +typedef enum { + GIT_CLONE_LOCAL_AUTO, + GIT_CLONE_LOCAL, + GIT_CLONE_NO_LOCAL, + GIT_CLONE_LOCAL_NO_LINKS, +} git_clone_local_t; + /** * Clone options structure * @@ -57,6 +64,7 @@ typedef struct git_clone_options { int bare; int ignore_cert_errors; + git_clone_local_t local; const char *remote_name; const char* checkout_branch; git_signature *signature; @@ -123,6 +131,35 @@ GIT_EXTERN(int) git_clone_into( const char *branch, const git_signature *signature); +/** + * Perform a local clone into a repository + * + * A "local clone" bypasses any git-aware protocols and simply copies + * over the object database from the source repository. It is often + * faster than a git-aware clone, but no verification of the data is + * performed, and can copy over too much data. + * + * @param repo the repository to use + * @param remote the remote repository to clone from + * @param co_opts options to use during checkout + * @param branch the branch to checkout after the clone, pass NULL for the + * remote's default branch + * @param link wether to use hardlinks instead of copying + * objects. This is only possible if both repositories are on the same + * filesystem. + * @param signature the identity used when updating the reflog + * @return 0 on success, any non-zero return value from a callback + * function, or a negative value to indicate an error (use + * `giterr_last` for a detailed error message) + */ +GIT_EXTERN(int) git_clone_local_into( + git_repository *repo, + git_remote *remote, + const git_checkout_options *co_opts, + const char *branch, + int link, + const git_signature *signature); + /** @} */ GIT_END_DECL #endif |
