summaryrefslogtreecommitdiff
path: root/entry.c
diff options
context:
space:
mode:
authorJohn Keeping <john@keeping.me.uk>2013-03-14 20:00:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2013-03-14 21:49:48 (GMT)
commit7297a440122b329c501e70dda099030373af069f (patch)
tree21a99bbcae115520fb4dacf2b3bcde0cce187c1e /entry.c
parent013c3bb81ee1643ce69a64197b2075212492c352 (diff)
downloadgit-7297a440122b329c501e70dda099030373af069f.zip
git-7297a440122b329c501e70dda099030373af069f.tar.gz
git-7297a440122b329c501e70dda099030373af069f.tar.bz2
entry: fix filter lookup
When looking up the stream filter, write_entry() should be passing the path of the file in the repository, not the path to which the content is going to be written. This allows the file to be correctly looked up against the .gitattributes files in the working tree. This change makes the streaming case match the non-streaming case which passes ce->name to convert_to_working_tree later in the same function. The two tests added here test the different paths through write_entry since the CRLF filter is a streaming filter but the user-defined smudge filter is not streamed. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'entry.c')
-rw-r--r--entry.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/entry.c b/entry.c
index 852fea1..6a1eb80 100644
--- a/entry.c
+++ b/entry.c
@@ -188,7 +188,7 @@ static int write_entry(struct cache_entry *ce, char *path, const struct checkout
struct stat st;
if (ce_mode_s_ifmt == S_IFREG) {
- struct stream_filter *filter = get_stream_filter(path, ce->sha1);
+ struct stream_filter *filter = get_stream_filter(ce->name, ce->sha1);
if (filter &&
!streaming_write_entry(ce, path, filter,
state, to_tempfile,