diff options
author | Vicent Marti <vicent@github.com> | 2014-08-29 18:19:56 +0200 |
---|---|---|
committer | Vicent Marti <vicent@github.com> | 2014-08-29 18:19:56 +0200 |
commit | 46a13f32472741f0ed66db7cb75c8cff279886ad (patch) | |
tree | 9faad1600432d9f014fedf4775d3f99359937e9d /include | |
parent | d99c8ca1783cfd04869e88f8707c036fc6053a05 (diff) | |
parent | 7db0e6ee48fd68009a7e78cbcbca125d6ce9008d (diff) | |
download | libgit2-46a13f32472741f0ed66db7cb75c8cff279886ad.tar.gz |
Merge pull request #2481 from libgit2/cmn/oidarray
merge: expose multiple merge bases
Diffstat (limited to 'include')
-rw-r--r-- | include/git2/merge.h | 16 | ||||
-rw-r--r-- | include/git2/oidarray.h | 40 |
2 files changed, 56 insertions, 0 deletions
diff --git a/include/git2/merge.h b/include/git2/merge.h index 9eb14ccb1..bd5ebc1bd 100644 --- a/include/git2/merge.h +++ b/include/git2/merge.h @@ -10,6 +10,7 @@ #include "common.h" #include "types.h" #include "oid.h" +#include "oidarray.h" #include "checkout.h" #include "index.h" @@ -321,6 +322,21 @@ GIT_EXTERN(int) git_merge_base( const git_oid *two); /** + * Find merge bases between two commits + * + * @param out array in which to store the resulting ids + * @param repo the repository where the commits exist + * @param one one of the commits + * @param two the other commit + * @return 0 on success, GIT_ENOTFOUND if not found or error code + */ +GIT_EXTERN(int) git_merge_bases( + git_oidarray *out, + git_repository *repo, + const git_oid *one, + const git_oid *two); + +/** * Find a merge base given a list of commits * * @param out the OID of a merge base considering all the commits diff --git a/include/git2/oidarray.h b/include/git2/oidarray.h new file mode 100644 index 000000000..0b3204597 --- /dev/null +++ b/include/git2/oidarray.h @@ -0,0 +1,40 @@ +/* + * Copyright (C) the libgit2 contributors. All rights reserved. + * + * 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_oidarray_h__ +#define INCLUDE_git_oidarray_h__ + +#include "common.h" +#include "oid.h" + +GIT_BEGIN_DECL + +/** Array of object ids */ +typedef struct git_oidarray { + git_oid *ids; + size_t count; +} git_oidarray; + +/** + * Free the OID array + * + * This method must (and must only) be called on `git_oidarray` + * objects where the array is allocated by the library. Not doing so, + * will result in a memory leak. + * + * This does not free the `git_oidarray` itself, since the library will + * never allocate that object directly itself (it is more commonly embedded + * inside another struct or created on the stack). + * + * @param array git_oidarray from which to free oid data + */ +GIT_EXTERN(void) git_oidarray_free(git_oidarray *array); + +/** @} */ +GIT_END_DECL + +#endif + |