Skip to content

Commit 4b81582

Browse files
dschoGit for Windows Build Agent
authored and
Git for Windows Build Agent
committed
status: reinstate --show-ignored-directory as a deprecated option
It was a bad idea to just remove that option from Git for Windows v2.15.0, as early users of that (still experimental) option would have been puzzled what they are supposed to do now. So let's reintroduce the flag, but make sure to show the user good advice how to fix this going forward. We'll remove this option in a more orderly fashion either in v2.16.0 or in v2.17.0. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent d038845 commit 4b81582

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed

builtin/commit.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1355,6 +1355,7 @@ static int git_status_config(const char *k, const char *v, void *cb)
13551355
int cmd_status(int argc, const char **argv, const char *prefix)
13561356
{
13571357
static int no_lock_index = 0;
1358+
static int show_ignored_directory = 0;
13581359
static struct wt_status s;
13591360
int fd;
13601361
struct object_id oid;
@@ -1386,6 +1387,10 @@ int cmd_status(int argc, const char **argv, const char *prefix)
13861387
N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
13871388
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
13881389
OPT_COLUMN(0, "column", &s.colopts, N_("list untracked files in columns")),
1390+
OPT_BOOL(0, "show-ignored-directory", &show_ignored_directory,
1391+
N_("(DEPRECATED: use --ignore=matching instead) Only "
1392+
"show directories that match an ignore pattern "
1393+
"name.")),
13891394
OPT_BOOL(0, "no-lock-index", &no_lock_index,
13901395
N_("(DEPRECATED: use `git --no-optional-locks status` "
13911396
"instead) Do not lock the index")),
@@ -1408,6 +1413,12 @@ int cmd_status(int argc, const char **argv, const char *prefix)
14081413
setenv(GIT_OPTIONAL_LOCKS_ENVIRONMENT, "false", 1);
14091414
}
14101415

1416+
if (show_ignored_directory) {
1417+
warning("--show-ignored-directory was deprecated, use "
1418+
"--ignored=matching instead");
1419+
ignored_arg = "matching";
1420+
}
1421+
14111422
handle_untracked_files_arg(&s);
14121423
handle_ignored_arg(&s);
14131424

Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
#!/bin/sh
2+
#
3+
#
4+
5+
test_description='git status collapse ignored'
6+
7+
. ./test-lib.sh
8+
9+
10+
cat >.gitignore <<\EOF
11+
*.ign
12+
ignored_dir/
13+
!*.unignore
14+
EOF
15+
16+
# commit initial ignore file
17+
test_expect_success 'setup initial commit and ignore file' '
18+
git add . &&
19+
test_tick &&
20+
git commit -m "Initial commit"
21+
'
22+
23+
cat >expect <<\EOF
24+
? expect
25+
? output
26+
! dir/ignored/ignored_1.ign
27+
! dir/ignored/ignored_2.ign
28+
! ignored/ignored_1.ign
29+
! ignored/ignored_2.ign
30+
EOF
31+
32+
# Test status behavior on folder with ignored files
33+
test_expect_success 'setup folder with ignored files' '
34+
mkdir -p ignored dir/ignored &&
35+
touch ignored/ignored_1.ign ignored/ignored_2.ign \
36+
dir/ignored/ignored_1.ign dir/ignored/ignored_2.ign
37+
'
38+
39+
test_expect_success 'Verify behavior of status on folders with ignored files' '
40+
test_when_finished "git clean -fdx" &&
41+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
42+
test_i18ncmp expect output
43+
'
44+
45+
# Test status bahavior on folder with tracked and ignored files
46+
cat >expect <<\EOF
47+
? expect
48+
? output
49+
! dir/tracked_ignored/ignored_1.ign
50+
! dir/tracked_ignored/ignored_2.ign
51+
! tracked_ignored/ignored_1.ign
52+
! tracked_ignored/ignored_2.ign
53+
EOF
54+
55+
test_expect_success 'setup folder with tracked & ignored files' '
56+
mkdir -p tracked_ignored dir/tracked_ignored &&
57+
touch tracked_ignored/tracked_1 tracked_ignored/tracked_2 \
58+
tracked_ignored/ignored_1.ign tracked_ignored/ignored_2.ign \
59+
dir/tracked_ignored/tracked_1 dir/tracked_ignored/tracked_2 \
60+
dir/tracked_ignored/ignored_1.ign dir/tracked_ignored/ignored_2.ign &&
61+
62+
git add tracked_ignored/tracked_1 tracked_ignored/tracked_2 \
63+
dir/tracked_ignored/tracked_1 dir/tracked_ignored/tracked_2 &&
64+
test_tick &&
65+
git commit -m "commit tracked files"
66+
'
67+
68+
test_expect_success 'Verify status on folder with tracked & ignored files' '
69+
test_when_finished "git clean -fdx && git reset HEAD~1 --hard" &&
70+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
71+
test_i18ncmp expect output
72+
'
73+
74+
75+
# Test status behavior on folder with untracked and ignored files
76+
cat >expect <<\EOF
77+
? dir/untracked_ignored/untracked_1
78+
? dir/untracked_ignored/untracked_2
79+
? expect
80+
? output
81+
? untracked_ignored/untracked_1
82+
? untracked_ignored/untracked_2
83+
! dir/untracked_ignored/ignored_1.ign
84+
! dir/untracked_ignored/ignored_2.ign
85+
! untracked_ignored/ignored_1.ign
86+
! untracked_ignored/ignored_2.ign
87+
EOF
88+
89+
test_expect_success 'setup folder with tracked & ignored files' '
90+
mkdir -p untracked_ignored dir/untracked_ignored &&
91+
touch untracked_ignored/untracked_1 untracked_ignored/untracked_2 \
92+
untracked_ignored/ignored_1.ign untracked_ignored/ignored_2.ign \
93+
dir/untracked_ignored/untracked_1 dir/untracked_ignored/untracked_2 \
94+
dir/untracked_ignored/ignored_1.ign dir/untracked_ignored/ignored_2.ign
95+
'
96+
97+
test_expect_success 'Verify status on folder with tracked & ignored files' '
98+
test_when_finished "git clean -fdx" &&
99+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
100+
test_i18ncmp expect output
101+
'
102+
103+
# Test status behavior on ignored folder
104+
cat >expect <<\EOF
105+
? expect
106+
? output
107+
! ignored_dir/
108+
EOF
109+
110+
test_expect_success 'setup folder with tracked & ignored files' '
111+
mkdir ignored_dir &&
112+
touch ignored_dir/ignored_1 ignored_dir/ignored_2 \
113+
ignored_dir/ignored_1.ign ignored_dir/ignored_2.ign
114+
'
115+
116+
test_expect_success 'Verify status on folder with tracked & ignored files' '
117+
test_when_finished "git clean -fdx" &&
118+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
119+
test_i18ncmp expect output
120+
'
121+
122+
# Test status behavior on ignored folder with tracked file
123+
cat >expect <<\EOF
124+
? expect
125+
? output
126+
! ignored_dir/ignored_1
127+
! ignored_dir/ignored_1.ign
128+
! ignored_dir/ignored_2
129+
! ignored_dir/ignored_2.ign
130+
EOF
131+
132+
test_expect_success 'setup folder with tracked & ignored files' '
133+
mkdir ignored_dir &&
134+
touch ignored_dir/ignored_1 ignored_dir/ignored_2 \
135+
ignored_dir/ignored_1.ign ignored_dir/ignored_2.ign \
136+
ignored_dir/tracked &&
137+
git add -f ignored_dir/tracked &&
138+
test_tick &&
139+
git commit -m "Force add file in ignored directory"
140+
'
141+
142+
test_expect_success 'Verify status on folder with tracked & ignored files' '
143+
test_when_finished "git clean -fdx && git reset HEAD~1 --hard" &&
144+
git status --porcelain=v2 --ignored --untracked-files=all --show-ignored-directory >output &&
145+
test_i18ncmp expect output
146+
'
147+
148+
test_done
149+

0 commit comments

Comments
 (0)