@matheusbsbs / matheus-bagliano / commits / 90b45187ba
Fork 0

Add `init.templatedir` configuration variable.

Rather than having to pass --template to git init and clone for a custom setup, `init.templatedir` may be set in '~/.gitconfig'. The environment variable GIT_TEMPLATE_DIR can already be used for this but this is nicer. System administrators may prefer using this variable in the system-wide config file to point at a locally modified copy (e.g. /etc/gittemplate) rather than editing vanilla template files in '/usr/share'. Signed-off-by: Steven Drake <sdrake@xnet.co.nz> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Steven Drake committed Feb 17, 2010 at 12:42 UTC 90b45187ba51a15c8a80680597240e32421f53bb
1 file changed +16
builtin-init-db.c
+16
@@ -20,6 +20,7 @@
20
21 static int init_is_bare_repository = 0;
22 static int init_shared_repository = -1;
23 +static const char *init_db_template_dir;
24
25 static void safe_create_dir(const char *dir, int share)
26 {
@@ -120,6 +121,8 @@ static void copy_templates(const char *template_dir)
121
122 if (!template_dir)
123 template_dir = getenv(TEMPLATE_DIR_ENVIRONMENT);
124 + if (!template_dir)
125 + template_dir = init_db_template_dir;
126 if (!template_dir)
127 template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
128 if (!template_dir[0])
@@ -165,6 +168,16 @@ static void copy_templates(const char *template_dir)
168 closedir(dir);
169 }
170
171 +static int git_init_db_config(const char *k, const char *v, void *cb)
172 +{
173 + if (!v)
174 + return config_error_nonbool(k);
175 + if (!strcmp(k, "init.templatedir"))
176 + return git_config_pathname(&init_db_template_dir, k, v);
177 +
178 + return 0;
179 +}
180 +
181 static int create_default_files(const char *template_path)
182 {
183 const char *git_dir = get_git_dir();
@@ -190,6 +203,9 @@ static int create_default_files(const char *template_path)
203 safe_create_dir(git_path("refs/heads"), 1);
204 safe_create_dir(git_path("refs/tags"), 1);
205
206 + /* Just look for `init.templatedir` */
207 + git_config(git_init_db_config, NULL);
208 +
209 /* First copy the templates -- we might have the default
210 * config file there, in which case we would want to read
211 * from it after installing.