Provide git_config with a callback-data parameter
[gitweb.git] / builtin-init-db.c
index 2854868b4e4185d33024b9fe5d00ad631c18bb36..f6aa3535299fdc56ff734c7476fcdfc7475a156d 100644 (file)
@@ -142,7 +142,7 @@ static void copy_templates(const char *git_dir, int len, const char *template_di
        strcpy(template_path + template_len, "config");
        repository_format_version = 0;
        git_config_from_file(check_repository_format_version,
-                            template_path);
+                            template_path, NULL);
        template_path[template_len] = 0;
 
        if (repository_format_version &&
@@ -197,7 +197,7 @@ static int create_default_files(const char *git_dir, const char *template_path)
        path[len] = 0;
        copy_templates(path, len, template_path);
 
-       git_config(git_default_config);
+       git_config(git_default_config, NULL);
 
        /*
         * We would have created the above under user's umask -- under
@@ -400,9 +400,16 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
                char buf[10];
                /* We do not spell "group" and such, so that
                 * the configuration can be read by older version
-                * of git.
+                * of git. Note, we use octal numbers for new share modes,
+                * and compatibility values for PERM_GROUP and
+                * PERM_EVERYBODY.
                 */
-               sprintf(buf, "%d", shared_repository);
+               if (shared_repository == PERM_GROUP)
+                       sprintf(buf, "%d", OLD_PERM_GROUP);
+               else if (shared_repository == PERM_EVERYBODY)
+                       sprintf(buf, "%d", OLD_PERM_EVERYBODY);
+               else
+                       sprintf(buf, "0%o", shared_repository);
                git_config_set("core.sharedrepository", buf);
                git_config_set("receive.denyNonFastforwards", "true");
        }