mirror of
https://github.com/git/git.git
synced 2024-11-23 09:56:28 +08:00
convert.c: ident + core.autocrlf didn't work
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 <tboegi@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
67e9bff06a
commit
caa47adc5a
19
convert.c
19
convert.c
@ -1380,27 +1380,22 @@ 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.crlf_action == CRLF_AUTO || ca.crlf_action == CRLF_AUTO_CRLF)
|
||||
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)
|
||||
filter = cascade_filter(filter, lf_to_crlf_filter());
|
||||
else
|
||||
filter = cascade_filter(filter, &null_filter_singleton);
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user