Skip to content

Commit

Permalink
Add init.templatedir configuration variable.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Steven Drake authored and gitster committed Feb 17, 2010
1 parent e923eae commit 90b4518
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions builtin-init-db.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

static int init_is_bare_repository = 0;
static int init_shared_repository = -1;
static const char *init_db_template_dir;

static void safe_create_dir(const char *dir, int share)
{
Expand Down Expand Up @@ -120,6 +121,8 @@ static void copy_templates(const char *template_dir)

if (!template_dir)
template_dir = getenv(TEMPLATE_DIR_ENVIRONMENT);
if (!template_dir)
template_dir = init_db_template_dir;
if (!template_dir)
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
if (!template_dir[0])
Expand Down Expand Up @@ -165,6 +168,16 @@ static void copy_templates(const char *template_dir)
closedir(dir);
}

static int git_init_db_config(const char *k, const char *v, void *cb)
{
if (!v)
return config_error_nonbool(k);
if (!strcmp(k, "init.templatedir"))
return git_config_pathname(&init_db_template_dir, k, v);

return 0;
}

static int create_default_files(const char *template_path)
{
const char *git_dir = get_git_dir();
Expand All @@ -190,6 +203,9 @@ static int create_default_files(const char *template_path)
safe_create_dir(git_path("refs/heads"), 1);
safe_create_dir(git_path("refs/tags"), 1);

/* Just look for `init.templatedir` */
git_config(git_init_db_config, NULL);

/* First copy the templates -- we might have the default
* config file there, in which case we would want to read
* from it after installing.
Expand Down

0 comments on commit 90b4518

Please sign in to comment.