Stefan Beller <[email protected]> writes:
> In the Gerrit repo I did
> $ echo "/plugins/commit-message-length-validator sub-default"
>>>.gitattributes
> $ git status ":(attr:sub-default)"
> Segmentation fault (core dumped)
Thanks. I can reproduce this easily with git.git, e.g.
$ cat >>.git/info/attributes <<-\EOF
Documentation/git-merge.txt conflict-marker-size=32
Documentation/user-manual.txt conflict-marker-size=32
EOF
$ git status ':(attr:conflict-marker-size=32)'
would die (presumably) the same way.
By the way, I just noticed that the <specification> part of the
':(attr:<specification>)' syntax would need to be rethought. In the
.gitattributes file everybody has, we see these lines:
*.[ch] whitespace=indent,trail,space
*.sh whitespace=indent,trail,space
but because comma is a special separator in the pathspec magic
system, we cannot do
$ git status ':(attr:whitespace=indent,trail,space)'
I think we should introduce a quoting mechanism to hide these commas
from the pathspec magic splitter, e.g.
where attr_value_unquote() would copy string while unquoting some
special characters (i.e. at least ' ' and ',' because they are used
as syntactic elements in the higher level; there might be others).
diff --git a/pathspec.c b/pathspec.c
index 0a02255..fb22f28 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -132,7 +132,7 @@ static void parse_pathspec_attr_match(struct pathspec_item
*item, const char *va
am->match_mode = MATCH_SET;
else {
am->match_mode = MATCH_VALUE;
- am->value = xstrdup(&attr[attr_len + 1]);
+ am->value = attr_value_unquote(&attr[attr_len +
1]);
if (strchr(am->value, '\\'))
die(_("attr spec values must not
contain backslashes"));
}
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html