Skip to content

Commit 1b292ba

Browse files
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 cc8d7af commit 1b292ba

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
@@ -1354,6 +1354,7 @@ static int git_status_config(const char *k, const char *v, void *cb)
13541354
int cmd_status(int argc, const char **argv, const char *prefix)
13551355
{
13561356
static int no_lock_index = 0;
1357+
static int show_ignored_directory = 0;
13571358
static struct wt_status s;
13581359
int fd;
13591360
struct object_id oid;
@@ -1385,6 +1386,10 @@ int cmd_status(int argc, const char **argv, const char *prefix)
13851386
N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
13861387
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
13871388
OPT_COLUMN(0, "column", &s.colopts, N_("list untracked files in columns")),
1389+
OPT_BOOL(0, "show-ignored-directory", &show_ignored_directory,
1390+
N_("(DEPRECATED: use --ignore=matching instead) Only "
1391+
"show directories that match an ignore pattern "
1392+
"name.")),
13881393
OPT_BOOL(0, "no-lock-index", &no_lock_index,
13891394
N_("(DEPRECATED: use `git --no-optional-locks status` "
13901395
"instead) Do not lock the index")),
@@ -1407,6 +1412,12 @@ int cmd_status(int argc, const char **argv, const char *prefix)
14071412
setenv(GIT_OPTIONAL_LOCKS_ENVIRONMENT, "false", 1);
14081413
}
14091414

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

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)