Skip to content

Commit

Permalink
Merge branch 'jc/gitignore-precedence' into maint
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Junio C Hamano committed Jun 5, 2015
2 parents 2d8bb46 + 099d2d8 commit e9f767e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
10 changes: 7 additions & 3 deletions dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
10 changes: 10 additions & 0 deletions t/t0008-ignores.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit e9f767e

Please sign in to comment.