mirror of
https://github.com/git/git
synced 2024-08-27 19:49:21 +00:00
Merge branch 'jc/gitignore-precedence'
core.excludesfile (defaulting to $XDG_HOME/git/ignore) is supposed to be overridden by repository-specific .git/info/exclude file, but the order was swapped from the beginning. This belatedly fixes it. * jc/gitignore-precedence: ignore: info/exclude should trump core.excludesfile
This commit is contained in:
commit
20cf8b548e
10
dir.c
10
dir.c
|
@ -1673,13 +1673,17 @@ void setup_standard_excludes(struct dir_struct *dir)
|
||||||
const char *path;
|
const char *path;
|
||||||
|
|
||||||
dir->exclude_per_dir = ".gitignore";
|
dir->exclude_per_dir = ".gitignore";
|
||||||
path = git_path("info/exclude");
|
|
||||||
|
/* core.excludefile defaulting to $XDG_HOME/git/ignore */
|
||||||
if (!excludes_file)
|
if (!excludes_file)
|
||||||
excludes_file = xdg_config_home("ignore");
|
excludes_file = xdg_config_home("ignore");
|
||||||
if (!access_or_warn(path, R_OK, 0))
|
|
||||||
add_excludes_from_file(dir, path);
|
|
||||||
if (excludes_file && !access_or_warn(excludes_file, R_OK, 0))
|
if (excludes_file && !access_or_warn(excludes_file, R_OK, 0))
|
||||||
add_excludes_from_file(dir, excludes_file);
|
add_excludes_from_file(dir, excludes_file);
|
||||||
|
|
||||||
|
/* per repository user preference */
|
||||||
|
path = git_path("info/exclude");
|
||||||
|
if (!access_or_warn(path, R_OK, 0))
|
||||||
|
add_excludes_from_file(dir, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
int remove_path(const char *name)
|
int remove_path(const char *name)
|
||||||
|
|
|
@ -831,4 +831,14 @@ test_expect_success !MINGW,!CYGWIN 'correct handling of backslashes' '
|
||||||
test_cmp err.expect err
|
test_cmp err.expect err
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'info/exclude trumps core.excludesfile' '
|
||||||
|
echo >>global-excludes usually-ignored &&
|
||||||
|
echo >>.git/info/exclude "!usually-ignored" &&
|
||||||
|
>usually-ignored &&
|
||||||
|
echo "?? usually-ignored" >expect &&
|
||||||
|
|
||||||
|
git status --porcelain usually-ignored >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in a new issue