From: tboegi@web.de Date: Tue, 19 Apr 2016 13:26:03 GMT Subject: [PATCH v5 4/4] convert.c: ident + core.autocrlf didn't work Message-ID: <1461072363-2874-1-git-send-email-tboegi@web.de> In-Reply-To: From: Torsten Bögershausen When the ident attributes is set, get_stream_filter() did not obey core.autocrlf=true, and the file was checked out with LF. Change the rule when a streaming filter can be used: - if an external filter is specified, don't use a stream filter. - if the worktree eol is CRLF and "auto" is active, don't use a stream filter. - Otherwise the stream filter can be used. Add test cases in t0027. Signed-off-by: Torsten Bögershausen --- convert.c | 18 ++++++------------ t/t0027-auto-crlf.sh | 2 +- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/convert.c b/convert.c index f524b8d..e8b0187 100644 --- a/convert.c +++ b/convert.c @@ -1380,27 +1380,21 @@ static struct stream_filter *ident_filter(const unsigned char *sha1) struct stream_filter *get_stream_filter(const char *path, const unsigned char *sha1) { struct conv_attrs ca; - enum crlf_action crlf_action; struct stream_filter *filter = NULL; convert_attrs(&ca, path); - if (ca.drv && (ca.drv->smudge || ca.drv->clean)) - return filter; + return NULL; if (ca.ident) filter = ident_filter(sha1); - crlf_action = ca.crlf_action; - - if ((crlf_action == CRLF_BINARY) || - crlf_action == CRLF_AUTO_INPUT || - (crlf_action == CRLF_TEXT_INPUT)) - filter = cascade_filter(filter, &null_filter_singleton); - - else if (output_eol(crlf_action) == EOL_CRLF && - !(crlf_action == CRLF_AUTO || crlf_action == CRLF_AUTO_CRLF)) + if (output_eol(ca.crlf_action) == EOL_CRLF) { + if (ca.crlf_action == CRLF_AUTO || ca.crlf_action == CRLF_AUTO_CRLF) + return NULL; filter = cascade_filter(filter, lf_to_crlf_filter()); + } else + filter = cascade_filter(filter, &null_filter_singleton); return filter; } diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh index fd5e326..9372589 100755 --- a/t/t0027-auto-crlf.sh +++ b/t/t0027-auto-crlf.sh @@ -493,7 +493,7 @@ fi export CRLF_MIX_LF_CR MIX NL # Same handling with and without ident -for id in "" +for id in "" ident do for ceol in lf crlf native do -- 2.8.0.rc2.2.g1a4d45a.dirty