summaryrefslogtreecommitdiff
path: root/include/git2
diff options
context:
space:
mode:
authorVicent Martí <vicent@github.com>2012-06-07 12:30:20 -0700
committerVicent Martí <vicent@github.com>2012-06-07 12:30:20 -0700
commit6c08e69fd92028822cb98368e564c5cb7964c072 (patch)
treee34d67219a554d58faa17e77fd13f5e568414938 /include/git2
parentb9ebcc59e7d13507d4f8faf86d68dd3ac1a4b627 (diff)
parentedebceffef1d661d073b9961d13042007325832d (diff)
downloadlibgit2-6c08e69fd92028822cb98368e564c5cb7964c072.tar.gz
Merge pull request #669 from nulltoken/topic/reset
Add git_reset()
Diffstat (limited to 'include/git2')
-rw-r--r--include/git2/reset.h44
-rw-r--r--include/git2/types.h6
2 files changed, 50 insertions, 0 deletions
diff --git a/include/git2/reset.h b/include/git2/reset.h
new file mode 100644
index 000000000..125178748
--- /dev/null
+++ b/include/git2/reset.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2009-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_reset_h__
+#define INCLUDE_git_reset_h__
+
+/**
+ * @file git2/reset.h
+ * @brief Git reset management routines
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Sets the current head to the specified commit oid and optionally
+ * resets the index and working tree to match.
+ *
+ * When specifying a Soft kind of reset, the head will be moved to the commit.
+ *
+ * Specifying a Mixed kind of reset will trigger a Soft reset and the index will
+ * be replaced with the content of the commit tree.
+ *
+ * TODO: Implement remaining kinds of resets.
+ *
+ * @param repo Repository where to perform the reset operation.
+ *
+ * @param target Object to which the Head should be moved to. This object
+ * must belong to the given `repo` and can either be a git_commit or a
+ * git_tag. When a git_tag is being passed, it should be dereferencable
+ * to a git_commit which oid will be used as the target of the branch.
+ *
+ * @param reset_type Kind of reset operation to perform.
+ *
+ * @return GIT_SUCCESS or an error code
+ */
+GIT_EXTERN(int) git_reset(git_repository *repo, const git_object *target, git_reset_type reset_type);
+
+/** @} */
+GIT_END_DECL
+#endif
diff --git a/include/git2/types.h b/include/git2/types.h
index cfb0acf33..b4b48afa3 100644
--- a/include/git2/types.h
+++ b/include/git2/types.h
@@ -166,6 +166,12 @@ typedef enum {
GIT_BRANCH_REMOTE = 2,
} git_branch_t;
+/** Kinds of reset operation. */
+typedef enum {
+ GIT_RESET_SOFT = 1,
+ GIT_RESET_MIXED = 2,
+} git_reset_type;
+
typedef struct git_refspec git_refspec;
typedef struct git_remote git_remote;