diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2012-10-12 17:49:38 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-10-12 08:24:44 -0700 |
commit | 55c61688ea1e41f4a8c26f957bf1bc43cd39ed97 (patch) | |
tree | 42cb9a2a8aa7492518e7cc25546359e7615e82b1 /grep.h | |
parent | 40701adbcbbc1e3e4485562a36343f4781e62be5 (diff) | |
download | git-55c61688ea1e41f4a8c26f957bf1bc43cd39ed97.tar.gz git-55c61688ea1e41f4a8c26f957bf1bc43cd39ed97.tar.xz |
grep: stop looking at random places for .gitattributes
grep searches for .gitattributes using "name" field in struct
grep_source but that field is not real on-disk path name. For example,
"grep pattern rev" fills the field with "rev:path", and Git looks for
.gitattributes in the (non-existent but exploitable) path "rev:path"
instead of "path".
This patch passes real paths down to grep_source_load_driver() when:
- grep on work tree
- grep on the index
- grep a commit (or a tag if it points to a commit)
so that these cases look up .gitattributes at proper paths.
.gitattributes lookup is disabled in all other cases.
Initial-work-by: Jeff King <peff@peff.net>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'grep.h')
-rw-r--r-- | grep.h | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -144,11 +144,13 @@ struct grep_source { char *buf; unsigned long size; + char *path; /* for attribute lookups */ struct userdiff_driver *driver; }; void grep_source_init(struct grep_source *gs, enum grep_source_type type, - const char *name, const void *identifier); + const char *name, const char *path, + const void *identifier); void grep_source_clear_data(struct grep_source *gs); void grep_source_clear(struct grep_source *gs); void grep_source_load_driver(struct grep_source *gs); |