summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/revparse.c32
-rw-r--r--src/revwalk.c19
2 files changed, 24 insertions, 27 deletions
diff --git a/src/revparse.c b/src/revparse.c
index d2c14ccbb..a4fedd27c 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -870,47 +870,43 @@ cleanup:
int git_revparse(
- git_object **left,
- git_object **right,
- unsigned int *flags,
- git_repository *repo,
- const char *spec)
+ git_revision *revision,
+ git_repository *repo,
+ const char *spec)
{
- unsigned int lflags = 0;
const char *dotdot;
int error = 0;
- assert(left && repo && spec);
+ assert(revision && repo && spec);
+
+ memset(revision, 0x0, sizeof(*revision));
if ((dotdot = strstr(spec, "..")) != NULL) {
char *lstr;
const char *rstr;
- lflags = GIT_REVPARSE_RANGE;
+ revision->flags = GIT_REVPARSE_RANGE;
- lstr = git__substrdup(spec, dotdot-spec);
+ lstr = git__substrdup(spec, dotdot - spec);
rstr = dotdot + 2;
if (dotdot[2] == '.') {
- lflags |= GIT_REVPARSE_MERGE_BASE;
+ revision->flags |= GIT_REVPARSE_MERGE_BASE;
rstr++;
}
- if ((error = git_revparse_single(left, repo, lstr)) < 0) {
+ if ((error = git_revparse_single(&revision->from, repo, lstr)) < 0) {
return error;
}
- if (right &&
- (error = git_revparse_single(right, repo, rstr)) < 0) {
+
+ if ((error = git_revparse_single(&revision->to, repo, rstr)) < 0) {
return error;
}
git__free((void*)lstr);
} else {
- lflags = GIT_REVPARSE_SINGLE;
- error = git_revparse_single(left, repo, spec);
+ revision->flags = GIT_REVPARSE_SINGLE;
+ error = git_revparse_single(&revision->from, repo, spec);
}
- if (flags)
- *flags = lflags;
-
return error;
}
diff --git a/src/revwalk.c b/src/revwalk.c
index 05e99c0b6..9e32198fc 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -231,25 +231,26 @@ int git_revwalk_push_ref(git_revwalk *walk, const char *refname)
int git_revwalk_push_range(git_revwalk *walk, const char *range)
{
- git_object *left, *right;
- git_revparse_flag_t revparseflags;
+ git_revision revision;
int error = 0;
- if ((error = git_revparse(&left, &right, &revparseflags, walk->repo, range)))
+ if ((error = git_revparse(&revision, walk->repo, range)))
return error;
- if (revparseflags & GIT_REVPARSE_MERGE_BASE) {
+
+ if (revision.flags & GIT_REVPARSE_MERGE_BASE) {
/* TODO: support "<commit>...<commit>" */
giterr_set(GITERR_INVALID, "Symmetric differences not implemented in revwalk");
return GIT_EINVALIDSPEC;
}
- if ((error = push_commit(walk, git_object_id(left), 1)))
+ if ((error = push_commit(walk, git_object_id(revision.from), 1)))
goto out;
- error = push_commit(walk, git_object_id(right), 0);
- out:
- git_object_free(left);
- git_object_free(right);
+ error = push_commit(walk, git_object_id(revision.to), 0);
+
+out:
+ git_object_free(revision.from);
+ git_object_free(revision.to);
return error;
}