File tree Expand file tree Collapse file tree 2 files changed +20
-3
lines changed
Expand file tree Collapse file tree 2 files changed +20
-3
lines changed Original file line number Diff line number Diff line change @@ -1235,7 +1235,7 @@ static int reserved_names_add8dot3(git_repository *repo, const char *path)
12351235
12361236 name_len = strlen (name );
12371237
1238- if ((name_len == def_len && memcmp (name , def , def_len ) == 0 ) ||
1238+ if ((name_len == def_len && memcmp (name , def , def_len ) == 0 ) ||
12391239 (name_len == def_dot_git_len && memcmp (name , def_dot_git , def_dot_git_len ) == 0 )) {
12401240 git__free (name );
12411241 return 0 ;
@@ -1784,7 +1784,13 @@ static int repo_init_structure(
17841784 default_template = true;
17851785 }
17861786
1787- if (tdir ) {
1787+ /*
1788+ * If tdir was the empty string, treat it like tdir was a path to an
1789+ * empty directory (so, don't do any copying). This is the behavior
1790+ * that git(1) exhibits, although it doesn't seem to be officially
1791+ * documented.
1792+ */
1793+ if (tdir && git__strcmp (tdir , "" ) != 0 ) {
17881794 uint32_t cpflags = GIT_CPDIR_COPY_SYMLINKS |
17891795 GIT_CPDIR_SIMPLE_TO_MODE |
17901796 GIT_CPDIR_COPY_DOTFILES ;
@@ -2762,7 +2768,7 @@ int git_repository__cleanup_files(
27622768 error = git_futils_rmdir_r (path , NULL ,
27632769 GIT_RMDIR_REMOVE_FILES | GIT_RMDIR_REMOVE_BLOCKERS );
27642770 }
2765-
2771+
27662772 git_buf_clear (& buf );
27672773 }
27682774
Original file line number Diff line number Diff line change @@ -320,6 +320,17 @@ void test_repo_init__sets_logAllRefUpdates_according_to_type_of_repository(void)
320320 assert_config_entry_on_init_bytype ("core.logallrefupdates" , true, false);
321321}
322322
323+ void test_repo_init__empty_template_path (void )
324+ {
325+ git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT ;
326+ opts .template_path = "" ;
327+
328+ cl_git_pass (git_futils_mkdir ("foo" , 0755 , 0 ));
329+ cl_git_pass (git_repository_init_ext (& _repo , "foo" , & opts ));
330+
331+ cleanup_repository ("foo" );
332+ }
333+
323334void test_repo_init__extended_0 (void )
324335{
325336 git_repository_init_options opts = GIT_REPOSITORY_INIT_OPTIONS_INIT ;
You can’t perform that action at this time.
0 commit comments