config: stop using config_exclusive_filename
commit270a34438b0776c072268838a8e8aa786494cfee
authorJeff King <peff@peff.net>
Thu, 16 Feb 2012 08:07:32 +0000 (16 03:07 -0500)
committerJunio C Hamano <gitster@pobox.com>
Fri, 17 Feb 2012 15:58:54 +0000 (17 07:58 -0800)
treefc78eb7336b3452911acae8adedd3dba41b5afeb
parentc9b5e2a57d2a69e0c6183758445da2f230b5a9f0
config: stop using config_exclusive_filename

The git-config command sometimes operates on the default set
of config files (either reading from all, or writing to repo
config), and sometimes operates on a specific file. In the
latter case, we set the magic global config_exclusive_filename,
and the code in config.c does the right thing.

Instead, let's have git-config use the "advanced" variants
of config.c's functions which let it specify an individual
filename (or NULL for the default). This makes the code a
lot more obvious, and fixes two small bugs:

  1. A relative path specified by GIT_CONFIG=foo will look
     in the wrong directory if we have to chdir as part of
     repository setup. We already handle this properly for
     "git config -f foo", but the GIT_CONFIG lookup used
     config_exclusive_filename directly. By dropping to a
     single magic variable, the GIT_CONFIG case now just
     works.

  2. Calling "git config -f foo --edit" would not respect
     core.editor. This is because just before editing, we
     called git_config, which would respect the
     config_exclusive_filename setting, even though this
     particular git_config call was not about looking in the
     user's specified file, but rather about loading actual
     git config, just as any other git program would.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/config.c
t/t1300-repo-config.sh