Re: [PATCH v3 3/6] create .git/refs in files-backend.c
On Tue, Feb 04, 2020 at 08:27:37PM +0000, Han-Wen Nienhuys via GitGitGadget wrote:
> From: Han-Wen Nienhuys <hanwen@google.com>
>
> This prepares for supporting the reftable format, which will want
> create its own file system layout in .git
This breaks 'git init', and, consequently, the whole test suite:
$ ./git init /tmp/foo
/tmp/foo/.git/refs/tmp/foo/.git/refs/heads: No such file or directory
Show 36 quoted lines
> builtin/init-db.c | 2 --
> refs/files-backend.c | 5 +++++
> 2 files changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/init-db.c b/builtin/init-db.c
> index 944ec77fe1..45bdea0589 100644
> --- a/builtin/init-db.c
> +++ b/builtin/init-db.c
> @@ -226,8 +226,6 @@ static int create_default_files(const char *template_path,
> * We need to create a "refs" dir in any case so that older
> * versions of git can tell that this is a repository.
> */
> - safe_create_dir(git_path("refs"), 1);
> - adjust_shared_perm(git_path("refs"));
>
> if (refs_init_db(&err))
> die("failed to set up refs db: %s", err.buf);
> diff --git a/refs/files-backend.c b/refs/files-backend.c
> index 0ea66a28b6..0c53b246e8 100644
> --- a/refs/files-backend.c
> +++ b/refs/files-backend.c
> @@ -3158,6 +3158,11 @@ static int files_init_db(struct ref_store *ref_store, struct strbuf *err)
> files_downcast(ref_store, REF_STORE_WRITE, "init_db");
> struct strbuf sb = STRBUF_INIT;
>
> + files_ref_path(refs, &sb, "refs");
> + safe_create_dir(sb.buf, 1);
> + /* adjust permissions even if directory already exists. */
> + adjust_shared_perm(sb.buf);
> +
> /*
> * Create .git/refs/{heads,tags}
> */
> --
> gitgitgadget
>