mirror of
https://github.com/git/git.git
synced 2024-11-24 18:33:43 +08:00
Merge branch 'jc/gitignore-precedence' into maint
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
e9f767ecee
10
dir.c
10
dir.c
@ -1673,13 +1673,17 @@ void setup_standard_excludes(struct dir_struct *dir)
|
||||
const char *path;
|
||||
|
||||
dir->exclude_per_dir = ".gitignore";
|
||||
path = git_path("info/exclude");
|
||||
|
||||
/* core.excludefile defaulting to $XDG_HOME/git/ignore */
|
||||
if (!excludes_file)
|
||||
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))
|
||||
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)
|
||||
|
@ -831,4 +831,14 @@ test_expect_success !MINGW,!CYGWIN 'correct handling of backslashes' '
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user