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)
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