summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Straub <bs@github.com>2013-03-11 13:20:47 -0700
committerBen Straub <bs@github.com>2013-04-08 16:35:09 +0400
commit4d13d07ab21d5041dc3b2e77c9447298d6b39eaa (patch)
tree5387f540d4e3bb2ea43f2b77934ae30253236b5f
parent812e5aea5963caee3a5894538921ac0530f548bd (diff)
downloadlibgit2-4d13d07ab21d5041dc3b2e77c9447298d6b39eaa.tar.gz
Propose unified rev-parse API
-rw-r--r--include/git2/revparse.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/git2/revparse.h b/include/git2/revparse.h
index edd8b3cce..71ff6d696 100644
--- a/include/git2/revparse.h
+++ b/include/git2/revparse.h
@@ -45,6 +45,43 @@ GIT_EXTERN(int) git_revparse_single(git_object **out, git_repository *repo, cons
*/
GIT_EXTERN(int) git_revparse_rangelike(git_object **left, git_object **right, int *threedots, git_repository *repo, const char *rangelike);
+
+/**
+ * Revparse flags. These indicate the intended behavior of the spec passed to
+ * git_revparse.
+ */
+typedef enum {
+ /** The spec targeted a single object. */
+ GIT_REVPARSE_SINGLE = 1 << 0,
+ /** The spec targeted a range of commits. */
+ GIT_REVPARSE_RANGE = 1 << 1,
+ /** The spec used the '...' operator, which invokes special semantics. */
+ GIT_REVPARSE_MERGE_BASE = 1 << 2,
+} git_revparse_flag_t;
+
+
+/**
+ * Find an object or range of commits as specified by a revision string.
+ * See `man gitrevisions` or http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions
+ * for information on the syntax accepted.
+ *
+ * @param left buffer that receives the target of the left side of a range operator. If
+ * there is no range operator, this buffer receives the single target.
+ * @param right buffer that receives the target of the right side of a range operator.
+ * This is only filled in if `spec` specifies a range of commits
+ * @param flags buffer that receives a bitwise combination of `git_revparse_flag_t` values
+ * @param repo the repository to search in
+ * @param spec the rev-parse spec to parse
+ * @return 0 on success, GIT_INVALIDSPEC, GIT_ENOTFOUND, GIT_EAMBIGUOUS or an error code
+ */
+GIT_EXTERN(int) git_revparse(
+ git_oid *left,
+ git_oid *right,
+ unsigned int *flags,
+ git_repository *repo,
+ const char *spec);
+
+
/** @} */
GIT_END_DECL
#endif