Commit 62602547 by Edward Thomson

git_repository_init: include dotfiles when copying templates

Include dotfiles when copying template directory, which will handle
both a template directory itself that begins with a dotfile, and
any dotfiles inside the directory.
parent 00282183
...@@ -1438,7 +1438,9 @@ static int repo_init_structure( ...@@ -1438,7 +1438,9 @@ static int repo_init_structure(
} }
if (tdir) { if (tdir) {
uint32_t cpflags = GIT_CPDIR_COPY_SYMLINKS | GIT_CPDIR_SIMPLE_TO_MODE; uint32_t cpflags = GIT_CPDIR_COPY_SYMLINKS |
GIT_CPDIR_SIMPLE_TO_MODE |
GIT_CPDIR_COPY_DOTFILES;
if (opts->mode != GIT_REPOSITORY_INIT_SHARED_UMASK) if (opts->mode != GIT_REPOSITORY_INIT_SHARED_UMASK)
cpflags |= GIT_CPDIR_CHMOD_DIRS; cpflags |= GIT_CPDIR_CHMOD_DIRS;
error = git_futils_cp_r(tdir, repo_dir, cpflags, dmode); error = git_futils_cp_r(tdir, repo_dir, cpflags, dmode);
......
...@@ -519,7 +519,8 @@ static void assert_mode_seems_okay( ...@@ -519,7 +519,8 @@ static void assert_mode_seems_okay(
static const char *template_sandbox(const char *name) static const char *template_sandbox(const char *name)
{ {
git_buf hooks_path = GIT_BUF_INIT, link_path = GIT_BUF_INIT; git_buf hooks_path = GIT_BUF_INIT, link_path = GIT_BUF_INIT,
dotfile_path = GIT_BUF_INIT;
const char *path = cl_fixture(name); const char *path = cl_fixture(name);
cl_fixture_sandbox(name); cl_fixture_sandbox(name);
...@@ -537,6 +538,12 @@ static const char *template_sandbox(const char *name) ...@@ -537,6 +538,12 @@ static const char *template_sandbox(const char *name)
cl_must_pass(symlink("update.sample", link_path.ptr)); cl_must_pass(symlink("update.sample", link_path.ptr));
#endif #endif
/* create a file starting with a dot */
cl_git_pass(git_buf_joinpath(&dotfile_path, hooks_path.ptr, ".dotfile"));
cl_git_mkfile(dotfile_path.ptr, "something\n");
git_buf_free(&dotfile_path);
git_buf_free(&dotfile_path);
git_buf_free(&link_path); git_buf_free(&link_path);
git_buf_free(&hooks_path); git_buf_free(&hooks_path);
...@@ -595,6 +602,10 @@ static void validate_templates(git_repository *repo, const char *template_path) ...@@ -595,6 +602,10 @@ static void validate_templates(git_repository *repo, const char *template_path)
template_path, git_repository_path(repo), template_path, git_repository_path(repo),
"hooks/link.sample", filemode); "hooks/link.sample", filemode);
assert_hooks_match(
template_path, git_repository_path(repo),
"hooks/.dotfile", filemode);
git_buf_free(&expected); git_buf_free(&expected);
git_buf_free(&actual); git_buf_free(&actual);
git_buf_free(&repo_description); git_buf_free(&repo_description);
......
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