Browse Source

git-status: respect core.excludesFile

git-add reads this variable, and honours the contents of that file if that
exists. Match this behaviour in git-status, too.

Noticed by Evan Carroll on IRC.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Johannes Schindelin 18 years ago committed by Junio C Hamano
parent
commit
0ba956d331
  1. 5
      Documentation/config.txt
  2. 5
      Documentation/git-status.txt
  3. 20
      t/t3001-ls-files-others-exclude.sh
  4. 9
      wt-status.c

5
Documentation/config.txt

@ -263,6 +263,11 @@ You probably do not need to adjust this value. @@ -263,6 +263,11 @@ You probably do not need to adjust this value.
+
Common unit suffixes of 'k', 'm', or 'g' are supported.

core.excludeFile::
In addition to '.gitignore' (per-directory) and
'.git/info/exclude', git looks into this file for patterns
of files which are not meant to be tracked.

alias.*::
Command aliases for the gitlink:git[1] command wrapper - e.g.
after defining "alias.last = cat-file commit HEAD", the invocation

5
Documentation/git-status.txt

@ -42,6 +42,11 @@ mean the same thing and the latter is kept for backward @@ -42,6 +42,11 @@ mean the same thing and the latter is kept for backward
compatibility) and `color.status.<slot>` configuration variables
to colorize its output.

As for gitlink:git-add[1], the configuration variable
'core.excludesfile' can indicate a path to a file containing patterns
of file names to exclude, in addition to patterns given in
'info/exclude' and '.gitignore'.


Author
------

20
t/t3001-ls-files-others-exclude.sh

@ -79,4 +79,24 @@ test_expect_success \ @@ -79,4 +79,24 @@ test_expect_success \
>output &&
git diff expect output'

cat > excludes-file << EOF
*.[1-8]
e*
EOF

git-config core.excludesFile excludes-file

git-runstatus | grep "^# " > output

cat > expect << EOF
# .gitignore
# a.6
# one/
# output
# three/
EOF

test_expect_success 'git-status honours core.excludesfile' \
'diff -u expect output'

test_done

9
wt-status.c

@ -22,6 +22,7 @@ static const char use_add_rm_msg[] = @@ -22,6 +22,7 @@ static const char use_add_rm_msg[] =
"use \"git add/rm <file>...\" to update what will be committed";
static const char use_add_to_include_msg[] =
"use \"git add <file>...\" to include in what will be committed";
static const char *excludes_file;

static int parse_status_slot(const char *var, int offset)
{
@ -259,6 +260,8 @@ static void wt_status_print_untracked(struct wt_status *s) @@ -259,6 +260,8 @@ static void wt_status_print_untracked(struct wt_status *s)
x = git_path("info/exclude");
if (file_exists(x))
add_excludes_from_file(&dir, x);
if (excludes_file && file_exists(excludes_file))
add_excludes_from_file(&dir, excludes_file);

read_directory(&dir, ".", "", 0);
for(i = 0; i < dir.nr; i++) {
@ -356,5 +359,11 @@ int git_status_config(const char *k, const char *v) @@ -356,5 +359,11 @@ int git_status_config(const char *k, const char *v)
int slot = parse_status_slot(k, 13);
color_parse(v, k, wt_status_colors[slot]);
}
if (!strcmp(k, "core.excludesfile")) {
if (!v)
die("core.excludesfile without value");
excludes_file = xstrdup(v);
return 0;
}
return git_default_config(k, v);
}

Loading…
Cancel
Save