Commit 8a629afe by Etienne Samson

examples: move refish resolution function in common

parent 698b4463
......@@ -12,6 +12,8 @@
* <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
#include <assert.h>
#include "common.h"
void check_lg2(int error, const char *message, const char *extra)
......@@ -245,3 +247,25 @@ void *xrealloc(void *oldp, size_t newsz)
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(
* A realloc that exits on failure
*/
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,
}
}
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)
{
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