refs: add methods to init refs db
[gitweb.git] / refs / files-backend.c
index 33ec5303845656fea156ba9f9dd7f8c158900289..40e789611c0be3503622ee9bdb3afde52a1e429c 100644 (file)
@@ -4058,10 +4058,28 @@ static int files_reflog_expire(struct ref_store *ref_store,
        return -1;
 }
 
+static int files_init_db(struct ref_store *ref_store, struct strbuf *err)
+{
+       /* Check validity (but we don't need the result): */
+       files_downcast(ref_store, 0, "init_db");
+
+       /*
+        * Create .git/refs/{heads,tags}
+        */
+       safe_create_dir(git_path("refs/heads"), 1);
+       safe_create_dir(git_path("refs/tags"), 1);
+       if (get_shared_repository()) {
+               adjust_shared_perm(git_path("refs/heads"));
+               adjust_shared_perm(git_path("refs/tags"));
+       }
+       return 0;
+}
+
 struct ref_storage_be refs_be_files = {
        NULL,
        "files",
        files_ref_store_create,
+       files_init_db,
        files_transaction_commit,
        files_initial_transaction_commit,