提交 dd482eea 编写于 作者: F Finn Arne Gangstad 提交者: Junio C Hamano

Support "\" in non-wildcard exclusion entries

"\" was treated differently in exclude rules depending on whether a
wildcard match was done. For wildcard rules, "\" was de-escaped in
fnmatch, but this was not done for other rules since they used strcmp
instead.  A file named "#foo" would not be excluded by "\#foo", but would
be excluded by "\#foo*".

We now treat all rules with "\" as wildcard rules.

Another solution could be to de-escape all non-wildcard rules as we
read them, but we would have to do the de-escaping exactly as fnmatch
does it to avoid inconsistencies.
Signed-off-by: NFinn Arne Gangstad <finnag@pvv.org>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 ab2fdb3b
......@@ -139,7 +139,7 @@ int match_pathspec(const char **pathspec, const char *name, int namelen, int pre
static int no_wildcard(const char *string)
{
return string[strcspn(string, "*?[{")] == '\0';
return string[strcspn(string, "*?[{\\")] == '\0';
}
void add_exclude(const char *string, const char *base,
......
......@@ -19,6 +19,9 @@ do
>$dir/a.$i
done
done
>"#ignore1"
>"#ignore2"
>"#hidden"
cat >expect <<EOF
a.2
......@@ -42,6 +45,9 @@ three/a.8
EOF
echo '.gitignore
\#ignore1
\#ignore2*
\#hid*n
output
expect
.gitignore
......@@ -79,9 +85,10 @@ test_expect_success \
>output &&
test_cmp expect output'
cat > excludes-file << EOF
cat > excludes-file <<\EOF
*.[1-8]
e*
\#*
EOF
git config core.excludesFile excludes-file
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册