Make !pattern in .gitattributes non-fatal
authorThomas Rast <trast@student.ethz.ch>
Fri, 1 Mar 2013 20:06:17 +0000 (21:06 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 1 Mar 2013 20:24:45 +0000 (12:24 -0800)
commit8b1bd024154f0ee0d71a6befe9bbd96462e76abc
tree08c39a9a729bd3d02f632f95b550322abc8fde68
parent1d38c6971dd1a4b054d90b7ae4c9de5400b9d818
Make !pattern in .gitattributes non-fatal

Before 82dce99 (attr: more matching optimizations from .gitignore,
2012-10-15), .gitattributes did not have any special treatment of a
leading '!'.  The docs, however, always said

  The rules how the pattern matches paths are the same as in
  `.gitignore` files; see linkgit:gitignore[5].

By those rules, leading '!' means pattern negation.  So 82dce99
correctly determined that this kind of line makes no sense and should
be disallowed.

However, users who actually had a rule for files starting with a '!'
are in a bad position: before 82dce99 '!' matched that literal
character, so it is conceivable that users have .gitattributes with
such lines in them.  After 82dce99 the unescaped version was
disallowed in such a way that git outright refuses to run(!) most
commands in the presence of such a .gitattributes.  It therefore
becomes very hard to fix, let alone work with, such repositories.

Let's at least allow the users to fix their repos: change the fatal
error into a warning.

Reported-by: mathstuf@gmail.com
Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
attr.c
t/t0003-attributes.sh