Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes
This gives the default value for the core.attributesfile variable following the exact same logic of the previous change for the core.excludesfile setting. 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
dc79687e0b
commit
684e40f657
@ -500,7 +500,9 @@ core.attributesfile::
|
|||||||
In addition to '.gitattributes' (per-directory) and
|
In addition to '.gitattributes' (per-directory) and
|
||||||
'.git/info/attributes', git looks into this file for attributes
|
'.git/info/attributes', git looks into this file for attributes
|
||||||
(see linkgit:gitattributes[5]). Path expansions are made the same
|
(see linkgit:gitattributes[5]). Path expansions are made the same
|
||||||
way as for `core.excludesfile`.
|
way as for `core.excludesfile`. Its default value is
|
||||||
|
$XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME is either not
|
||||||
|
set or empty, $HOME/.config/git/attributes is used instead.
|
||||||
|
|
||||||
core.editor::
|
core.editor::
|
||||||
Commands such as `commit` and `tag` that lets you edit
|
Commands such as `commit` and `tag` that lets you edit
|
||||||
|
@ -75,6 +75,8 @@ repositories (i.e., attributes of interest to all users) should go into
|
|||||||
`.gitattributes` files. Attributes that should affect all repositories
|
`.gitattributes` files. Attributes that should affect all repositories
|
||||||
for a single user should be placed in a file specified by the
|
for a single user should be placed in a file specified by the
|
||||||
`core.attributesfile` configuration option (see linkgit:git-config[1]).
|
`core.attributesfile` configuration option (see linkgit:git-config[1]).
|
||||||
|
Its default value is $XDG_CONFIG_HOME/git/attributes. If $XDG_CONFIG_HOME
|
||||||
|
is either not set or empty, $HOME/.config/git/attributes is used instead.
|
||||||
Attributes for all users on a system should be placed in the
|
Attributes for all users on a system should be placed in the
|
||||||
`$(prefix)/etc/gitattributes` file.
|
`$(prefix)/etc/gitattributes` file.
|
||||||
|
|
||||||
|
7
attr.c
7
attr.c
@ -497,6 +497,7 @@ static int git_attr_system(void)
|
|||||||
static void bootstrap_attr_stack(void)
|
static void bootstrap_attr_stack(void)
|
||||||
{
|
{
|
||||||
struct attr_stack *elem;
|
struct attr_stack *elem;
|
||||||
|
char *xdg_attributes_file;
|
||||||
|
|
||||||
if (attr_stack)
|
if (attr_stack)
|
||||||
return;
|
return;
|
||||||
@ -515,14 +516,16 @@ static void bootstrap_attr_stack(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (git_attributes_file) {
|
if (!git_attributes_file) {
|
||||||
|
home_config_paths(NULL, &xdg_attributes_file, "attributes");
|
||||||
|
git_attributes_file = xdg_attributes_file;
|
||||||
|
}
|
||||||
elem = read_attr_from_file(git_attributes_file, 1);
|
elem = read_attr_from_file(git_attributes_file, 1);
|
||||||
if (elem) {
|
if (elem) {
|
||||||
elem->origin = NULL;
|
elem->origin = NULL;
|
||||||
elem->prev = attr_stack;
|
elem->prev = attr_stack;
|
||||||
attr_stack = elem;
|
attr_stack = elem;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_bare_repository() || direction == GIT_ATTR_INDEX) {
|
if (!is_bare_repository() || direction == GIT_ATTR_INDEX) {
|
||||||
elem = read_attr(GITATTRIBUTES_FILE, 1);
|
elem = read_attr(GITATTRIBUTES_FILE, 1);
|
||||||
|
@ -96,4 +96,33 @@ test_expect_success 'Exclusion in a non-XDG global ignore file' '
|
|||||||
'
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success 'Checking attributes in the XDG attributes file' '
|
||||||
|
echo foo >f &&
|
||||||
|
git check-attr -a f >actual &&
|
||||||
|
test_line_count -eq 0 actual &&
|
||||||
|
echo "f attr_f" >"$HOME"/.config/git/attributes &&
|
||||||
|
echo "f: attr_f: set" >expected &&
|
||||||
|
git check-attr -a f >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success 'Checking attributes in both XDG and local attributes files' '
|
||||||
|
echo "f -attr_f" >.gitattributes &&
|
||||||
|
echo "f: attr_f: unset" >expected &&
|
||||||
|
git check-attr -a f >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
|
test_expect_success 'Checking attributes in a non-XDG global attributes file' '
|
||||||
|
test_might_fail rm .gitattributes &&
|
||||||
|
echo "f attr_f=test" >"$HOME"/my_gitattributes &&
|
||||||
|
git config core.attributesfile "$HOME"/my_gitattributes &&
|
||||||
|
echo "f: attr_f: test" >expected &&
|
||||||
|
git check-attr -a f >actual &&
|
||||||
|
test_cmp expected actual
|
||||||
|
'
|
||||||
|
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user