config: write to $XDG_CONFIG_HOME/git/config file when appropriate
Teach git to write to $XDG_CONFIG_HOME/git/config if - it already exists, - $HOME/.gitconfig file doesn't, and - The --global option is used. Otherwise, write to $HOME/.gitconfig when the --global option is given, as before. If the user doesn't create $XDG_CONFIG_HOME/git/config, there is absolutely no change. Users can use this new file only if they want. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/config will be used. Advice for users who often come back to an old version of Git: you shouldn't create this file. Signed-off-by: Huynh Khoi Nguyen Nguyen <Huynh-Khoi-Nguyen.Nguyen@ensimag.imag.fr> Signed-off-by: Valentin Duperray <Valentin.Duperray@ensimag.imag.fr> Signed-off-by: Franck Jonas <Franck.Jonas@ensimag.imag.fr> Signed-off-by: Lucien Kong <Lucien.Kong@ensimag.imag.fr> Signed-off-by: Thomas Nguy <Thomas.Nguy@ensimag.imag.fr> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
684e40f657
commit
0e8593dc5b
@ -97,7 +97,8 @@ OPTIONS
|
|||||||
|
|
||||||
--global::
|
--global::
|
||||||
For writing options: write to global ~/.gitconfig file rather than
|
For writing options: write to global ~/.gitconfig file rather than
|
||||||
the repository .git/config.
|
the repository .git/config, write to $XDG_CONFIG_HOME/git/config file
|
||||||
|
if this file exists and the ~/.gitconfig file doesn't.
|
||||||
+
|
+
|
||||||
For reading options: read only from global ~/.gitconfig and from
|
For reading options: read only from global ~/.gitconfig and from
|
||||||
$XDG_CONFIG_HOME/git/config rather than from all available files.
|
$XDG_CONFIG_HOME/git/config rather than from all available files.
|
||||||
|
@ -387,10 +387,7 @@ int cmd_config(int argc, const char **argv, const char *prefix)
|
|||||||
|
|
||||||
home_config_paths(&user_config, &xdg_config, "config");
|
home_config_paths(&user_config, &xdg_config, "config");
|
||||||
|
|
||||||
if (access(user_config, R_OK) && !access(xdg_config, R_OK) &&
|
if (access(user_config, R_OK) && !access(xdg_config, R_OK))
|
||||||
(actions == ACTION_LIST ||
|
|
||||||
actions == ACTION_GET_COLOR ||
|
|
||||||
actions == ACTION_GET_COLORBOOL))
|
|
||||||
given_config_file = xdg_config;
|
given_config_file = xdg_config;
|
||||||
else if (user_config)
|
else if (user_config)
|
||||||
given_config_file = user_config;
|
given_config_file = user_config;
|
||||||
|
@ -125,4 +125,34 @@ test_expect_success 'Checking attributes in a non-XDG global attributes file' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success 'write: xdg file exists and ~/.gitconfig doesn'\''t' '
|
||||||
|
mkdir -p "$HOME"/.config/git &&
|
||||||
|
>"$HOME"/.config/git/config &&
|
||||||
|
test_might_fail rm "$HOME"/.gitconfig &&
|
||||||
|
git config --global user.name "write_config" &&
|
||||||
|
echo "[user]" >expected &&
|
||||||
|
echo " name = write_config" >>expected &&
|
||||||
|
test_cmp expected "$HOME"/.config/git/config
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success 'write: xdg file exists and ~/.gitconfig exists' '
|
||||||
|
>"$HOME"/.gitconfig &&
|
||||||
|
git config --global user.name "write_gitconfig" &&
|
||||||
|
echo "[user]" >expected &&
|
||||||
|
echo " name = write_gitconfig" >>expected &&
|
||||||
|
test_cmp expected "$HOME"/.gitconfig
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success 'write: ~/.config/git/ exists and config file doesn'\''t' '
|
||||||
|
test_might_fail rm "$HOME"/.gitconfig &&
|
||||||
|
test_might_fail rm "$HOME"/.config/git/config &&
|
||||||
|
git config --global user.name "write_gitconfig" &&
|
||||||
|
echo "[user]" >expected &&
|
||||||
|
echo " name = write_gitconfig" >>expected &&
|
||||||
|
test_cmp expected "$HOME"/.gitconfig
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user