summaryrefslogtreecommitdiff
path: root/include/git2/checkout.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/git2/checkout.h')
-rw-r--r--include/git2/checkout.h44
1 files changed, 35 insertions, 9 deletions
diff --git a/include/git2/checkout.h b/include/git2/checkout.h
index deb828722..42d47003d 100644
--- a/include/git2/checkout.h
+++ b/include/git2/checkout.h
@@ -21,21 +21,30 @@
*/
GIT_BEGIN_DECL
-
-#define GIT_CHECKOUT_OVERWRITE_EXISTING 0 /* default */
-#define GIT_CHECKOUT_SKIP_EXISTING 1
+enum {
+ GIT_CHECKOUT_DEFAULT = (1 << 0),
+ GIT_CHECKOUT_OVERWRITE_MODIFIED = (1 << 1),
+ GIT_CHECKOUT_CREATE_MISSING = (1 << 2),
+ GIT_CHECKOUT_REMOVE_UNTRACKED = (1 << 3),
+};
/* Use zeros to indicate default settings */
typedef struct git_checkout_opts {
- int existing_file_action; /* default: GIT_CHECKOUT_OVERWRITE_EXISTING */
+ unsigned int checkout_strategy; /* default: GIT_CHECKOUT_DEFAULT */
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 */
+
+ /* when not NULL, arrays of fnmatch pattern specifying
+ * which paths should be taken into account
+ */
+ git_strarray paths;
} git_checkout_opts;
/**
- * Updates files in the working tree to match the commit pointed to by HEAD.
+ * Updates files in the index and the working tree to match the content of the
+ * commit pointed at by HEAD.
*
* @param repo repository to check out (must be non-bare)
* @param opts specifies checkout options (may be NULL)
@@ -49,19 +58,36 @@ GIT_EXTERN(int) git_checkout_head(
git_indexer_stats *stats);
/**
- * Updates files in the working tree to match a commit pointed to by a ref.
+ * Updates files in the working tree to match the content of the index.
*
- * @param ref reference to follow to a commit
+ * @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_reference(
- git_reference *ref,
+GIT_EXTERN(int) git_checkout_index(
+ git_repository *repo,
git_checkout_opts *opts,
git_indexer_stats *stats);
+/**
+ * Updates files in the index and working tree to match the content of the
+ * tree pointed at by the treeish.
+ *
+ * @param repo repository to check out (must be non-bare)
+ * @param treeish a commit, tag or tree which content will be used to update
+ * the working directory
+ * @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_tree(
+ git_repository *repo,
+ git_object *treeish,
+ git_checkout_opts *opts,
+ git_indexer_stats *stats);
/** @} */
GIT_END_DECL