Commit 848d77dc by Russell Belfer

Merge pull request #1242 from sba1/init-with-template-fix

Some fixes for external template support
parents 09e29e47 72719e73
...@@ -1005,8 +1005,17 @@ static int repo_init_structure( ...@@ -1005,8 +1005,17 @@ static int repo_init_structure(
tdir = GIT_TEMPLATE_DIR; tdir = GIT_TEMPLATE_DIR;
} }
/* FIXME: GIT_CPDIR_CHMOD cannot applied here as an attempt
* would be made to chmod() all directories up to the last
* component of repo_dir, e.g., also /home etc. Recall that
* repo_dir is prettified at this point.
*
* Best probably would be to have the same logic as in
* git_futils_mkdir(), i.e., to separate the base from
* the path.
*/
error = git_futils_cp_r(tdir, repo_dir, error = git_futils_cp_r(tdir, repo_dir,
GIT_CPDIR_COPY_SYMLINKS | GIT_CPDIR_CHMOD, dmode); GIT_CPDIR_COPY_SYMLINKS /*| GIT_CPDIR_CHMOD*/, dmode);
if (error < 0) { if (error < 0) {
if (strcmp(tdir, GIT_TEMPLATE_DIR) != 0) if (strcmp(tdir, GIT_TEMPLATE_DIR) != 0)
...@@ -1015,6 +1024,7 @@ static int repo_init_structure( ...@@ -1015,6 +1024,7 @@ static int repo_init_structure(
/* if template was default, ignore error and use internal */ /* if template was default, ignore error and use internal */
giterr_clear(); giterr_clear();
external_tpl = false; external_tpl = false;
error = 0;
} }
} }
......
...@@ -365,9 +365,12 @@ void test_repo_init__extended_1(void) ...@@ -365,9 +365,12 @@ void test_repo_init__extended_1(void)
void test_repo_init__extended_with_template(void) void test_repo_init__extended_with_template(void)
{ {
git_buf expected = GIT_BUF_INIT;
git_buf actual = GIT_BUF_INIT;
git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT; git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT;
opts.flags = GIT_REPOSITORY_INIT_MKPATH | GIT_REPOSITORY_INIT_BARE; opts.flags = GIT_REPOSITORY_INIT_MKPATH | GIT_REPOSITORY_INIT_BARE | GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE;
opts.template_path = cl_fixture("template"); opts.template_path = cl_fixture("template");
cl_git_pass(git_repository_init_ext(&_repo, "templated.git", &opts)); cl_git_pass(git_repository_init_ext(&_repo, "templated.git", &opts));
...@@ -375,6 +378,14 @@ void test_repo_init__extended_with_template(void) ...@@ -375,6 +378,14 @@ void test_repo_init__extended_with_template(void)
cl_assert(git_repository_is_bare(_repo)); cl_assert(git_repository_is_bare(_repo));
cl_assert(!git__suffixcmp(git_repository_path(_repo), "/templated.git/")); cl_assert(!git__suffixcmp(git_repository_path(_repo), "/templated.git/"));
cl_assert(git_futils_readbuffer(&expected,cl_fixture("template/description")) == GIT_OK);
cl_assert(git_futils_readbuffer(&actual,"templated.git/description") == GIT_OK);
cl_assert(!git_buf_cmp(&expected,&actual));
git_buf_free(&expected);
git_buf_free(&actual);
cleanup_repository("templated.git"); cleanup_repository("templated.git");
} }
......
Unnamed repository; edit this file 'description' to name the repository. Edit this file 'description' to name the repository.
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