Commit 25345c0cbe1493d63bbc9d309d7fcf0f84df741b

Carlos Martín Nieto 2014-09-30T09:18:22

describe: rename git_describe_opts to git_describe_options And implement the option init functions for this and the format options.

diff --git a/include/git2/describe.h b/include/git2/describe.h
index 8b80e18..bdbdfcf 100644
--- a/include/git2/describe.h
+++ b/include/git2/describe.h
@@ -32,9 +32,9 @@ typedef enum {
  * Zero out for defaults.  Initialize with `GIT_DESCRIBE_OPTIONS_INIT` macro to
  * correctly set the `version` field.  E.g.
  *
- *		git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+ *		git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
  */
-typedef struct git_describe_opts {
+typedef struct git_describe_options {
 	unsigned int version;
 
 	unsigned int max_candidates_tags; /** default: 10 */
@@ -42,7 +42,7 @@ typedef struct git_describe_opts {
 	const char *pattern;
 	int only_follow_first_parent;
 	int show_commit_oid_as_fallback;
-} git_describe_opts;
+} git_describe_options;
 
 #define GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS 10
 #define GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE 7
@@ -53,6 +53,8 @@ typedef struct git_describe_opts {
 	GIT_DESCRIBE_DEFAULT_MAX_CANDIDATES_TAGS, \
 }
 
+GIT_EXTERN(int) git_describe_init_options(git_describe_options *opts, unsigned int version);
+
 typedef struct {
 	unsigned int version;
 
@@ -68,17 +70,19 @@ typedef struct {
 		GIT_DESCRIBE_DEFAULT_ABBREVIATED_SIZE, \
  }
 
+GIT_EXTERN(int) git_describe_init_format_options(git_describe_format_options *opts, unsigned int version);
+
 typedef struct git_describe_result git_describe_result;
 
 GIT_EXTERN(int) git_describe_commit(
 	git_describe_result **result,
 	git_object *committish,
-	git_describe_opts *opts);
+	git_describe_options *opts);
 
 GIT_EXTERN(int) git_describe_workdir(
 	git_describe_result **out,
 	git_repository *repo,
-	git_describe_opts *opts);
+	git_describe_options *opts);
 
 GIT_EXTERN(int) git_describe_format(git_buf *out, const git_describe_result *result, const git_describe_format_options *opts);
 
diff --git a/src/describe.c b/src/describe.c
index b8bead9..afb2e21 100644
--- a/src/describe.c
+++ b/src/describe.c
@@ -178,7 +178,7 @@ typedef struct git_describe_result {
 
 struct get_name_data
 {
-	git_describe_opts *opts;
+	git_describe_options *opts;
 	git_repository *repo;
 	git_oidmap *names;
 	git_describe_result *result;
@@ -634,10 +634,10 @@ cleanup:
 }
 
 static int normalize_options(
-	git_describe_opts *dst,
-	const git_describe_opts *src)
+	git_describe_options *dst,
+	const git_describe_options *src)
 {
-	git_describe_opts default_options = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options default_options = GIT_DESCRIBE_OPTIONS_INIT;
 	if (!src) src = &default_options;
 
 	*dst = *src;
@@ -648,18 +648,16 @@ static int normalize_options(
 	return 0;
 }
 
-/** TODO: Add git_object_describe_workdir(git_buf *, const char *dirty_suffix, git_describe_opts *); */
-
 int git_describe_commit(
 	git_describe_result **result,
 	git_object *committish,
-	git_describe_opts *opts)
+	git_describe_options *opts)
 {
 	struct get_name_data data;
 	struct commit_name *name;
 	git_commit *commit;
 	int error = -1;
-	git_describe_opts normOptions;
+	git_describe_options normalized;
 
 	assert(committish);
 
@@ -670,21 +668,19 @@ int git_describe_commit(
 	data.opts = opts;
 	data.repo = git_object_owner(committish);
 
-	if ((error = normalize_options(&normOptions, opts)) < 0)
+	if ((error = normalize_options(&normalized, opts)) < 0)
 		return error;
 
 	GITERR_CHECK_VERSION(
-		&normOptions,
+		&normalized,
 		GIT_DESCRIBE_OPTIONS_VERSION,
-		"git_describe_opts");
+		"git_describe_options");
 
 	data.names = git_oidmap_alloc();
 	GITERR_CHECK_ALLOC(data.names);
 
 	/** TODO: contains to be implemented */
 
-	/** TODO: deal with max_abbrev_size (either document or fix) */
-
 	if ((error = git_object_peel((git_object **)(&commit), committish, GIT_OBJ_COMMIT)) < 0)
 		goto cleanup;
 
@@ -725,7 +721,7 @@ cleanup:
 int git_describe_workdir(
 	git_describe_result **out,
 	git_repository *repo,
-	git_describe_opts *opts)
+	git_describe_options *opts)
 {
 	int error;
 	git_oid current_id;
@@ -859,3 +855,17 @@ void git_describe_result_free(git_describe_result *result)
 
 	git__free(result);
 }
+
+int git_describe_init_options(git_describe_options *opts, unsigned int version)
+{
+	GIT_INIT_STRUCTURE_FROM_TEMPLATE(
+		opts, version, git_describe_options, GIT_DESCRIBE_OPTIONS_INIT);
+	return 0;
+}
+
+int git_describe_init_format_options(git_describe_format_options *opts, unsigned int version)
+{
+	GIT_INIT_STRUCTURE_FROM_TEMPLATE(
+		opts, version, git_describe_format_options, GIT_DESCRIBE_FORMAT_OPTIONS_INIT);
+	return 0;
+}
diff --git a/tests/describe/describe.c b/tests/describe/describe.c
index d2df36c..9a523a1 100644
--- a/tests/describe/describe.c
+++ b/tests/describe/describe.c
@@ -4,7 +4,7 @@
 void test_describe_describe__can_describe_against_a_bare_repo(void)
 {
 	git_repository *repo;
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 
 	cl_git_pass(git_repository_open(&repo, cl_fixture("testrepo.git")));
@@ -31,7 +31,7 @@ static int delete_cb(git_reference *ref, void *payload)
 void test_describe_describe__cannot_describe_against_a_repo_with_no_ref(void)
 {
 	git_repository *repo;
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_buf buf = GIT_BUF_INIT;
 	git_object *object;
 	git_describe_result *result = NULL;
diff --git a/tests/describe/describe_helpers.c b/tests/describe/describe_helpers.c
index e4dfcef..7a6a73c 100644
--- a/tests/describe/describe_helpers.c
+++ b/tests/describe/describe_helpers.c
@@ -4,7 +4,7 @@ void assert_describe(
 	const char *expected_output,
 	const char *revparse_spec,
 	git_repository *repo,
-	git_describe_opts *opts,
+	git_describe_options *opts,
 	git_describe_format_options *fmt_opts)
 {
 	git_object *object;
@@ -26,7 +26,7 @@ void assert_describe(
 void assert_describe_workdir(
 	const char *expected_output,
 	git_repository *repo,
-	git_describe_opts *opts,
+	git_describe_options *opts,
 	git_describe_format_options *fmt_opts)
 {
 	git_buf label = GIT_BUF_INIT;
diff --git a/tests/describe/describe_helpers.h b/tests/describe/describe_helpers.h
index 5d64172..16a0638 100644
--- a/tests/describe/describe_helpers.h
+++ b/tests/describe/describe_helpers.h
@@ -5,11 +5,11 @@ extern void assert_describe(
 	const char *expected_output,
 	const char *revparse_spec,
 	git_repository *repo,
-	git_describe_opts *opts,
+	git_describe_options *opts,
 	git_describe_format_options *fmt_opts);
 
 extern void assert_describe_workdir(
 	const char *expected_output,
 	git_repository *repo,
-	git_describe_opts *opts,
+	git_describe_options *opts,
 	git_describe_format_options *fmt_opts);
diff --git a/tests/describe/t6120.c b/tests/describe/t6120.c
index b470938..2377335 100644
--- a/tests/describe/t6120.c
+++ b/tests/describe/t6120.c
@@ -18,7 +18,7 @@ void test_describe_t6120__cleanup(void)
 
 void test_describe_t6120__default(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 
 	assert_describe("A-*", "HEAD", repo, &opts, &fmt_opts);
@@ -31,7 +31,7 @@ void test_describe_t6120__default(void)
 
 void test_describe_t6120__tags(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 	opts.describe_strategy = GIT_DESCRIBE_TAGS;
 
@@ -45,7 +45,7 @@ void test_describe_t6120__tags(void)
 
 void test_describe_t6120__all(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 	opts.describe_strategy = GIT_DESCRIBE_ALL;
 
@@ -56,7 +56,7 @@ void test_describe_t6120__all(void)
 
 void test_describe_t6120__longformat(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 
 	fmt_opts.always_use_long_format = 1;
@@ -67,7 +67,7 @@ void test_describe_t6120__longformat(void)
 
 void test_describe_t6120__firstparent(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 	opts.describe_strategy = GIT_DESCRIBE_TAGS;
 
@@ -79,7 +79,7 @@ void test_describe_t6120__firstparent(void)
 
 void test_describe_t6120__workdir(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 
 	assert_describe_workdir("A-*[0-9a-f]", repo, &opts, &fmt_opts);
@@ -119,7 +119,7 @@ static void commit_and_tag(
 
 void test_describe_t6120__pattern(void)
 {
-	git_describe_opts opts = GIT_DESCRIBE_OPTIONS_INIT;
+	git_describe_options opts = GIT_DESCRIBE_OPTIONS_INIT;
 	git_describe_format_options fmt_opts = GIT_DESCRIBE_FORMAT_OPTIONS_INIT;
 	git_oid tag_id;
 	git_object *head;