summaryrefslogtreecommitdiff
path: root/include/git2/checkout.h
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2012-08-19 01:26:06 -0700
committerVicent Martí <vicent@github.com>2012-08-19 01:26:06 -0700
commitf98c32f3fea0d5532db2d5733418aa62648b9e93 (patch)
tree5b53901f1848d73a72765ec014e2ad5188316eb4 /include/git2/checkout.h
parent1a10fded40875f986164b80c6efd414cd1507cb8 (diff)
parenteb87800ab631d19a7655f01ece130455b1cc976a (diff)
downloadlibgit2-f98c32f3fea0d5532db2d5733418aa62648b9e93.tar.gz
Merge pull request #778 from ben/clone
Clone
Diffstat (limited to 'include/git2/checkout.h')
-rw-r--r--include/git2/checkout.h66
1 files changed, 66 insertions, 0 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