Commit b4d13652 by Ben Straub

Deploy GIT_REPOSITORY_INIT_OPTIONS_INIT

parent 9267ff58
...@@ -1151,9 +1151,8 @@ static int repo_init_create_origin(git_repository *repo, const char *url) ...@@ -1151,9 +1151,8 @@ static int repo_init_create_origin(git_repository *repo, const char *url)
int git_repository_init( int git_repository_init(
git_repository **repo_out, const char *path, unsigned is_bare) git_repository **repo_out, const char *path, unsigned is_bare)
{ {
git_repository_init_options opts; git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT;
memset(&opts, 0, sizeof(opts));
opts.flags = GIT_REPOSITORY_INIT_MKPATH; /* don't love this default */ opts.flags = GIT_REPOSITORY_INIT_MKPATH; /* don't love this default */
if (is_bare) if (is_bare)
opts.flags |= GIT_REPOSITORY_INIT_BARE; opts.flags |= GIT_REPOSITORY_INIT_BARE;
...@@ -1161,6 +1160,18 @@ int git_repository_init( ...@@ -1161,6 +1160,18 @@ int git_repository_init(
return git_repository_init_ext(repo_out, path, &opts); return git_repository_init_ext(repo_out, path, &opts);
} }
static bool options_have_valid_version(git_repository_init_options *opts)
{
if (!opts)
return true;
if (opts->version > 0 && opts->version <= GIT_REMOTE_CALLBACKS_VERSION)
return true;
giterr_set(GITERR_INVALID, "Invalid version %d for git_repository_init_options", opts->version);
return false;
}
int git_repository_init_ext( int git_repository_init_ext(
git_repository **out, git_repository **out,
const char *given_repo, const char *given_repo,
...@@ -1171,6 +1182,9 @@ int git_repository_init_ext( ...@@ -1171,6 +1182,9 @@ int git_repository_init_ext(
assert(out && given_repo && opts); assert(out && given_repo && opts);
if (!options_have_valid_version(opts))
return -1;
error = repo_init_directories(&repo_path, &wd_path, given_repo, opts); error = repo_init_directories(&repo_path, &wd_path, given_repo, opts);
if (error < 0) if (error < 0)
goto cleanup; goto cleanup;
......
...@@ -205,7 +205,7 @@ int git_submodule_add_setup( ...@@ -205,7 +205,7 @@ int git_submodule_add_setup(
git_config_backend *mods = NULL; git_config_backend *mods = NULL;
git_submodule *sm; git_submodule *sm;
git_buf name = GIT_BUF_INIT, real_url = GIT_BUF_INIT; git_buf name = GIT_BUF_INIT, real_url = GIT_BUF_INIT;
git_repository_init_options initopt; git_repository_init_options initopt = GIT_REPOSITORY_INIT_OPTIONS_INIT;
git_repository *subrepo = NULL; git_repository *subrepo = NULL;
assert(repo && url && path); assert(repo && url && path);
...@@ -275,7 +275,6 @@ int git_submodule_add_setup( ...@@ -275,7 +275,6 @@ int git_submodule_add_setup(
* Old style: sub-repo goes directly into repo/<name>/.git/ * Old style: sub-repo goes directly into repo/<name>/.git/
*/ */
memset(&initopt, 0, sizeof(initopt));
initopt.flags = GIT_REPOSITORY_INIT_MKPATH | initopt.flags = GIT_REPOSITORY_INIT_MKPATH |
GIT_REPOSITORY_INIT_NO_REINIT; GIT_REPOSITORY_INIT_NO_REINIT;
initopt.origin_url = real_url.ptr; initopt.origin_url = real_url.ptr;
......
...@@ -304,8 +304,7 @@ void test_repo_init__sets_logAllRefUpdates_according_to_type_of_repository(void) ...@@ -304,8 +304,7 @@ void test_repo_init__sets_logAllRefUpdates_according_to_type_of_repository(void)
void test_repo_init__extended_0(void) void test_repo_init__extended_0(void)
{ {
git_repository_init_options opts; git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT;
memset(&opts, 0, sizeof(opts));
/* without MKDIR this should fail */ /* without MKDIR this should fail */
cl_git_fail(git_repository_init_ext(&_repo, "extended", &opts)); cl_git_fail(git_repository_init_ext(&_repo, "extended", &opts));
...@@ -327,8 +326,7 @@ void test_repo_init__extended_1(void) ...@@ -327,8 +326,7 @@ void test_repo_init__extended_1(void)
git_reference *ref; git_reference *ref;
git_remote *remote; git_remote *remote;
struct stat st; struct stat st;
git_repository_init_options opts; git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT;
memset(&opts, 0, sizeof(opts));
opts.flags = GIT_REPOSITORY_INIT_MKPATH | opts.flags = GIT_REPOSITORY_INIT_MKPATH |
GIT_REPOSITORY_INIT_NO_DOTGIT_DIR; GIT_REPOSITORY_INIT_NO_DOTGIT_DIR;
...@@ -367,8 +365,7 @@ void test_repo_init__extended_1(void) ...@@ -367,8 +365,7 @@ void test_repo_init__extended_1(void)
void test_repo_init__extended_with_template(void) void test_repo_init__extended_with_template(void)
{ {
git_repository_init_options opts; git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT;
memset(&opts, 0, sizeof(opts));
opts.flags = GIT_REPOSITORY_INIT_MKPATH | GIT_REPOSITORY_INIT_BARE; opts.flags = GIT_REPOSITORY_INIT_MKPATH | GIT_REPOSITORY_INIT_BARE;
opts.template_path = cl_fixture("template"); opts.template_path = cl_fixture("template");
......
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