On Wed, Jun 18, 2008 at 03:30:35PM -0700, Linus Torvalds wrote: > It makes the code a bit easier to read, and in theory a bit faster too > (no need to compare all the different "core.*" strings against non-core > config options). Maybe it would be easier still to read (and unmeasurably more efficient) to actually do it like: if (!prefixcmp(var, "core.")) return git_default_core_config(var+5, value); ... int git_default_core_config(const char *var, const char *value) { if (!strcmp(var, "pager")) ... > The config system really should get something of a complete overhaul, > but in the absense of that, this at least improves on it a tiny bit. I was curious a while ago and instrumented git_config to write the PID to a tempfile each time it was called. Most git programs parse the config files (.git/config, ~/.gitconfig, /etc/gitconfig) three times each, with some doing it as many as five times. Most of the config functions are simply "if this key, then set this value". I wonder if it would be simpler to just load the whole thing at once, using a table similar to parseopt. Then we could do useful things like say "you specified core.foobar, but there is no such variable." I know we can't know all values, since some non-git programs put values in the config, but I don't think it's unreasonable for us to claim all of core.*, especially if it helps us catch simple configuration errors. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html