Re: git should not use a default user.email config value
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 13, 2013, 16:31 UTC
- Message-ID
- <7vwqnpy2l4.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <20130812123921.GA16088@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 32 quoted lines
> diff --git a/config.c b/config.c
> index e13a7b6..a31dc85 100644
> --- a/config.c
> +++ b/config.c
> @@ -119,10 +119,45 @@ int git_config_include(const char *var, const char *value, void *data)
> return ret;
> }
>
> +static NORETURN void die_bad_regex(int err, regex_t *re)
> +{
> + char errbuf[1024];
> + regerror(err, re, errbuf, sizeof(errbuf));
> + if (cf && cf->name)
> + die("bad regex (at %s:%d): %s", cf->name, cf->linenr, errbuf);
> + else
> + die("bad regex: %s", errbuf);
> +}
> +
> +static int match_repo_path(const char *re_str)
> +{
> + regex_t re;
> + int ret;
> + const char *repo_path;
> +
> + ret = regcomp(&re, re_str, REG_EXTENDED);
> + if (ret)
> + die_bad_regex(ret, &re);
> +
> + repo_path = absolute_path(get_git_dir());
> + ret = regexec(&re, repo_path, 0, NULL, 0);
> + regfree(&re);
> + return !ret;We do this every time during the parsing?
Hmph, if you had "include.repo:/home/junio/frotz/.path" and "include.repo:/srv/project/git.git/.path" in your ~/.gitconfig, then a single regexp that is lazily prepared once will not cut it, so I guess that you cannot avoid it.
Unlike "git init|clone --profile=foo" that requires you to be explicit about your profile upon invocation, this mechanism is much easier to use by having include.<magic>.path in some global configuration, and the existing precedence rule makes it perfect. By starting /etc/gitconfig and/or your $HOME/.gitconfig with series of include.<magic>.path, you can have the default definitions included from these magic include to take effect before anything else, and settings from other configuration files can override it.