summaryrefslogtreecommitdiff
path: root/include/git2/revparse.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/git2/revparse.h')
-rw-r--r--include/git2/revparse.h52
1 files changed, 39 insertions, 13 deletions
diff --git a/include/git2/revparse.h b/include/git2/revparse.h
index edd8b3cce..a992d2c48 100644
--- a/include/git2/revparse.h
+++ b/include/git2/revparse.h
@@ -21,29 +21,55 @@
GIT_BEGIN_DECL
/**
- * Find an object, as specified by a revision string. See `man gitrevisions`, or the documentation
- * for `git rev-parse` for information on the syntax accepted.
+ * Find a single object, 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 out pointer to output object
* @param repo the repository to search in
* @param spec the textual specification for an object
- * @return 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS,
- * GIT_EINVALIDSPEC or an error code
+ * @return 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code
*/
GIT_EXTERN(int) git_revparse_single(git_object **out, git_repository *repo, const char *spec);
+
/**
- * Parse a string with the form of a revision range, as accepted by
- * `git rev-list`, `git diff`, and others.
+ * 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;
+
+
+/**
+ * Parse a revision string for left, right, and intent. See `man gitrevisions` or
+ * http://git-scm.com/docs/git-rev-parse.html#_specifying_revisions for information
+ * on the syntax accepted.
*
- * @param left (output) the left-hand commit
- * @param right (output) the right-hand commit
- * @param threedots (output) 0 if the endpoints are separated by two dots, 1 if by three
- * @param repo the repository to find the commits in
- * @param rangelike the rangelike string to be parsed
- * @return 0 on success, or any error `git_revparse_single` can return
+ * @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. May
+ * be NULL.
+ * @param flags buffer that receives a bitwise combination of `git_revparse_flag_t` values.
+ * May be NULL.
+ * @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_rangelike(git_object **left, git_object **right, int *threedots, git_repository *repo, const char *rangelike);
+GIT_EXTERN(int) git_revparse(
+ git_object **left,
+ git_object **right,
+ unsigned int *flags,
+ git_repository *repo,
+ const char *spec);
+
/** @} */
GIT_END_DECL