Skip to content

Commit

Permalink
Let core.attributesfile default to $XDG_CONFIG_HOME/git/attributes
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Huynh Khoi Nguyen Nguyen authored and Junio C Hamano committed Jun 25, 2012
1 parent dc79687 commit 684e40f
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 8 deletions.
4 changes: 3 additions & 1 deletion Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -500,7 +500,9 @@ core.attributesfile::
In addition to '.gitattributes' (per-directory) and
'.git/info/attributes', git looks into this file for attributes
(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::
Commands such as `commit` and `tag` that lets you edit
Expand Down
2 changes: 2 additions & 0 deletions Documentation/gitattributes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ repositories (i.e., attributes of interest to all users) should go into
`.gitattributes` files. Attributes that should affect all repositories
for a single user should be placed in a file specified by the
`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
`$(prefix)/etc/gitattributes` file.

Expand Down
17 changes: 10 additions & 7 deletions attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -497,6 +497,7 @@ static int git_attr_system(void)
static void bootstrap_attr_stack(void)
{
struct attr_stack *elem;
char *xdg_attributes_file;

if (attr_stack)
return;
Expand All @@ -515,13 +516,15 @@ static void bootstrap_attr_stack(void)
}
}

if (git_attributes_file) {
elem = read_attr_from_file(git_attributes_file, 1);
if (elem) {
elem->origin = NULL;
elem->prev = attr_stack;
attr_stack = elem;
}
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);
if (elem) {
elem->origin = NULL;
elem->prev = attr_stack;
attr_stack = elem;
}

if (!is_bare_repository() || direction == GIT_ATTR_INDEX) {
Expand Down
29 changes: 29 additions & 0 deletions t/t1306-xdg-files.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 684e40f

Please sign in to comment.