Commit 8a629afe by Etienne Samson

examples: move refish resolution function in common

parent 698b4463
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
* <http://creativecommons.org/publicdomain/zero/1.0/>. * <http://creativecommons.org/publicdomain/zero/1.0/>.
*/ */
#include <assert.h>
#include "common.h" #include "common.h"
void check_lg2(int error, const char *message, const char *extra) void check_lg2(int error, const char *message, const char *extra)
...@@ -245,3 +247,25 @@ void *xrealloc(void *oldp, size_t newsz) ...@@ -245,3 +247,25 @@ void *xrealloc(void *oldp, size_t newsz)
return p; return p;
} }
int resolve_refish(git_annotated_commit **commit, git_repository *repo, const char *refish)
{
git_reference *ref;
int err = 0;
git_oid oid;
assert(commit != NULL);
err = git_reference_dwim(&ref, repo, refish);
if (err == GIT_OK) {
git_annotated_commit_from_ref(commit, repo, ref);
git_reference_free(ref);
return 0;
}
err = git_oid_fromstr(&oid, refish);
if (err == GIT_OK) {
err = git_annotated_commit_lookup(commit, repo, &oid);
}
return err;
}
...@@ -108,3 +108,8 @@ extern void treeish_to_tree( ...@@ -108,3 +108,8 @@ extern void treeish_to_tree(
* A realloc that exits on failure * A realloc that exits on failure
*/ */
extern void *xrealloc(void *oldp, size_t newsz); extern void *xrealloc(void *oldp, size_t newsz);
/**
* Convert a refish to an annotated commit.
*/
extern int resolve_refish(git_annotated_commit **commit, git_repository *repo, const char *refish);
...@@ -87,29 +87,6 @@ static void parse_options(const char **repo_path, merge_options *opts, int argc, ...@@ -87,29 +87,6 @@ static void parse_options(const char **repo_path, merge_options *opts, int argc,
} }
} }
static int resolve_refish(git_annotated_commit **commit, git_repository *repo, const char *refish)
{
git_reference *ref;
int err = 0;
git_oid oid;
assert(commit != NULL);
err = git_reference_dwim(&ref, repo, refish);
if (err == GIT_OK) {
git_annotated_commit_from_ref(commit, repo, ref);
git_reference_free(ref);
return 0;
}
err = git_oid_fromstr(&oid, refish);
if (err == GIT_OK) {
err = git_annotated_commit_lookup(commit, repo, &oid);
}
return err;
}
static int resolve_heads(git_repository *repo, merge_options *opts) static int resolve_heads(git_repository *repo, merge_options *opts)
{ {
git_annotated_commit **annotated = calloc(opts->heads_count, sizeof(git_annotated_commit *)); git_annotated_commit **annotated = calloc(opts->heads_count, sizeof(git_annotated_commit *));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment