mirror of
https://git.proxmox.com/git/libgit2
synced 2025-10-14 15:29:14 +00:00
Merge pull request #1242 from sba1/init-with-template-fix
Some fixes for external template support
This commit is contained in:
commit
848d77dc83
@ -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(
|
|||||||
/* 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)
|
|||||||
|
|
||||||
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)
|
|||||||
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
Unnamed repository; edit this file 'description' to name the repository.
|
Edit this file 'description' to name the repository.
|
||||||
|
Loading…
Reference in New Issue
Block a user