git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v7 5/8] config: add `git_die_config()` to the config-set API

From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Date
Aug 4, 2014, 20:04 UTC
Message-ID
<vpqegwwauo2.fsf@anie.imag.fr>
In-Reply-To
<53DFD729.8090307@gmail.com>
Tanay Abhra <tanayabh@gmail.com> writes:
Show 13 quoted lines
> I was aping the old git_config() system, it also does exactly what you described
> above. for example, builtin/gc.c line 91,
>
> 		if (!strcmp(var, "gc.pruneexpire")) {
> 		if (value && strcmp(value, "now")) {
> 			unsigned long now = approxidate("now");
> 			if (approxidate(value) >= now)
> 				return error(_("Invalid %s: '%s'"), var, value);
> 		}
>
> would print,
>  	error: Invalid gc.pruneexpire: 'value'
> 	fatal: bad config variable 'gc.pruneexpire' at file line 15 in .git/config

It's good to do at least as well as the old system, but I agree with Junio that it's suboptimal.

Having a single API call to replace
        error("'%s' must be between 1 and 3");
        git_config_die(key);
with stg like:
        git_config_die(key, "'%s' must be between 1 and 3");

in Junio's example would allow git_config_die to format the error message the way it likes (i.e. it can be the same as before when you introduce it, and improve afterwards).

I've never been disturbed by the quality of Git's error messages wrt config files (it's not a compiler!), so having good quality messages is not a high priority IMHO, but having a good API that as a side effect can produce good error messages is important. If changing the error messages requires rewritting all callers later, then we've missed the point doing the refactoring now.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
Previous: Tanay AbhraNext: Tanay Abhra
Message 10 of 19 in “Rewrite `git_config()` using config-set API”
  1. 0/8 Rewrite `git_config()` using config-set APITanay Abhra, Aug 1, 2014
  2. 1/8 config.c: mark error and warnings strings for translationTanay Abhra, Aug 1, 2014
  3. 2/8 config.c: fix accuracy of line number in errorsTanay Abhra, Aug 1, 2014
  4. Matthieu MoyAug 4, 2014
  5. 3/8 add line number and file name info to `config_set`Tanay Abhra, Aug 1, 2014
  6. 4/8 change `git_config()` return value to voidTanay Abhra, Aug 1, 2014
  7. 5/8 config: add `git_die_config()` to the config-set APITanay Abhra, Aug 1, 2014
  8. Junio C HamanoAug 4, 2014
  9. Tanay AbhraAug 4, 2014
  10. Matthieu MoyAug 4, 2014
  11. Tanay AbhraAug 5, 2014
  12. Matthieu MoyAug 5, 2014
  13. Junio C HamanoAug 5, 2014
  14. Junio C HamanoAug 4, 2014
  15. 6/8 rewrite git_config() to use the config-set APITanay Abhra, Aug 1, 2014
  16. 7/8 add a test for semantic errors in config filesTanay Abhra, Aug 1, 2014
  17. Junio C HamanoAug 4, 2014
  18. 8/8 add tests for `git_config_get_string_const()`Tanay Abhra, Aug 1, 2014
  19. Matthieu MoyAug 4, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.