diff options
author | Vicent Martà <vicent@github.com> | 2012-08-19 01:26:06 -0700 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2012-08-19 01:26:06 -0700 |
commit | f98c32f3fea0d5532db2d5733418aa62648b9e93 (patch) | |
tree | 5b53901f1848d73a72765ec014e2ad5188316eb4 /include/git2 | |
parent | 1a10fded40875f986164b80c6efd414cd1507cb8 (diff) | |
parent | eb87800ab631d19a7655f01ece130455b1cc976a (diff) | |
download | libgit2-f98c32f3fea0d5532db2d5733418aa62648b9e93.tar.gz |
Merge pull request #778 from ben/clone
Clone
Diffstat (limited to 'include/git2')
-rw-r--r-- | include/git2/checkout.h | 66 | ||||
-rw-r--r-- | include/git2/clone.h | 59 | ||||
-rw-r--r-- | include/git2/index.h | 9 |
3 files changed, 131 insertions, 3 deletions
diff --git a/include/git2/checkout.h b/include/git2/checkout.h new file mode 100644 index 000000000..ac31b3462 --- /dev/null +++ b/include/git2/checkout.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2012 the libgit2 contributors + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_git_checkout_h__ +#define INCLUDE_git_checkout_h__ + +#include "common.h" +#include "types.h" +#include "indexer.h" + + +/** + * @file git2/checkout.h + * @brief Git checkout routines + * @defgroup git_checkout Git checkout routines + * @ingroup Git + * @{ + */ +GIT_BEGIN_DECL + + +#define GIT_CHECKOUT_OVERWRITE_EXISTING 0 /* default */ +#define GIT_CHECKOUT_SKIP_EXISTING 1 + +/* Use zeros to indicate default settings */ +typedef struct git_checkout_opts { + int existing_file_action; /* default: GIT_CHECKOUT_OVERWRITE_EXISTING */ + int disable_filters; + int dir_mode; /* default is 0755 */ + int file_mode; /* default is 0644 */ + int file_open_flags; /* default is O_CREAT | O_TRUNC | O_WRONLY */ +} git_checkout_opts; + +/** + * Updates files in the working tree to match the commit pointed to by HEAD. + * + * @param repo repository to check out (must be non-bare) + * @param opts specifies checkout options (may be NULL) + * @param stats structure through which progress information is reported + * @return 0 on success, GIT_ERROR otherwise (use giterr_last for information about the error) + */ +GIT_EXTERN(int) git_checkout_head(git_repository *repo, + git_checkout_opts *opts, + git_indexer_stats *stats); + + + +/** + * Updates files in the working tree to match a commit pointed to by a ref. + * + * @param ref reference to follow to a commit + * @param opts specifies checkout options (may be NULL) + * @param stats structure through which progress information is reported + * @return 0 on success, GIT_ERROR otherwise (use giterr_last for information about the error) + */ +GIT_EXTERN(int) git_checkout_reference(git_reference *ref, + git_checkout_opts *opts, + git_indexer_stats *stats); + + +/** @} */ +GIT_END_DECL +#endif diff --git a/include/git2/clone.h b/include/git2/clone.h new file mode 100644 index 000000000..40292ed59 --- /dev/null +++ b/include/git2/clone.h @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2012 the libgit2 contributors + * + * This file is part of libgit2, distributed under the GNU GPL v2 with + * a Linking Exception. For full terms see the included COPYING file. + */ +#ifndef INCLUDE_git_clone_h__ +#define INCLUDE_git_clone_h__ + +#include "common.h" +#include "types.h" +#include "indexer.h" +#include "checkout.h" + + +/** + * @file git2/clone.h + * @brief Git cloning routines + * @defgroup git_clone Git cloning routines + * @ingroup Git + * @{ + */ +GIT_BEGIN_DECL + +/** + * 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_url repository to clone from + * @param workdir_path local directory to clone to + * @param fetch_stats pointer to structure that receives fetch progress information (may be NULL) + * @param checkout_opts options for the checkout step (may be NULL) + * @return 0 on success, GIT_ERROR otherwise (use giterr_last for information about the error) + */ +GIT_EXTERN(int) git_clone(git_repository **out, + const char *origin_url, + const char *workdir_path, + git_indexer_stats *fetch_stats, + git_indexer_stats *checkout_stats, + git_checkout_opts *checkout_opts); + +/** + * Create a bare clone of a remote repository. + * + * @param out pointer that will receive the resulting repository object + * @param origin_url repository to clone from + * @param dest_path local directory to clone to + * @param fetch_stats pointer to structure that receives fetch progress information (may be NULL) + * @return 0 on success, GIT_ERROR otherwise (use giterr_last for information about the error) + */ +GIT_EXTERN(int) git_clone_bare(git_repository **out, + const char *origin_url, + const char *dest_path, + git_indexer_stats *fetch_stats); + +/** @} */ +GIT_END_DECL +#endif diff --git a/include/git2/index.h b/include/git2/index.h index 0093330e2..062932e1a 100644 --- a/include/git2/index.h +++ b/include/git2/index.h @@ -8,6 +8,7 @@ #define INCLUDE_git_index_h__ #include "common.h" +#include "indexer.h" #include "types.h" #include "oid.h" @@ -335,15 +336,17 @@ GIT_EXTERN(const git_index_entry_unmerged *) git_index_get_unmerged_byindex(git_ GIT_EXTERN(int) git_index_entry_stage(const git_index_entry *entry); /** - * Read a tree into the index file + * Read a tree into the index file with stats * - * The current index contents will be replaced by the specified tree. + * The current index contents will be replaced by the specified tree. The total + * node count is collected in stats. * * @param index an existing index object * @param tree tree to read + * @param stats structure that receives the total node count (may be NULL) * @return 0 or an error code */ -GIT_EXTERN(int) git_index_read_tree(git_index *index, git_tree *tree); +GIT_EXTERN(int) git_index_read_tree(git_index *index, git_tree *tree, git_indexer_stats *stats); /** @} */ GIT_END_DECL |