config: treat user and xdg config permission problems as errors
authorJonathan Nieder <jrnieder@gmail.com>
Sun, 14 Oct 2012 00:04:02 +0000 (17:04 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 14 Oct 2012 04:59:16 +0000 (21:59 -0700)
commit96b9e0e313604f77456906ce58db8f366e47f2ab
tree67632a6ba4f7918ae40b58519dfa3ea3f794af4f
parente5c52c9898de5f829317729afc0416825531b0d5
config: treat user and xdg config permission problems as errors

Git reads multiple configuration files: settings come first from the
system config file (typically /etc/gitconfig), then the xdg config
file (typically ~/.config/git/config), then the user's dotfile
(~/.gitconfig), then the repository configuration (.git/config).

Git has always used access(2) to decide whether to use each file; as
an unfortunate side effect, that means that if one of these files is
unreadable (e.g., EPERM or EIO), git skips it.  So if I use
~/.gitconfig to override some settings but make a mistake and give it
the wrong permissions then I am subject to the settings the sysadmin
chose for /etc/gitconfig.

Better to error out and ask the user to correct the problem.

This only affects the user and xdg config files, since the user
presumably has enough access to fix their permissions.  If the system
config file is unreadable, the best we can do is to warn about it so
the user knows to notify someone and get on with work in the meantime.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c
git-compat-util.h
wrapper.c