module git2.revparse;

import git2.common;
import git2.util;
import git2.types;

extern (C):

int git_revparse_single(git_object **out_, git_repository *repo, const(char)* spec);
int git_revparse_ext(
	git_object **object_out,
	git_reference **reference_out,
	git_repository *repo,
	const(char)* spec);

enum git_revparse_mode_t {
	GIT_REVPARSE_SINGLE         = 1 << 0,
	GIT_REVPARSE_RANGE          = 1 << 1,
	GIT_REVPARSE_MERGE_BASE     = 1 << 2,
}
mixin _ExportEnumMembers!git_revparse_mode_t;

struct git_revspec {
	git_object *from;
	git_object *to;
	uint flags;
}

int git_revparse(
		git_revspec *revspec,
		git_repository *repo,
		const(char)* spec);