From: Torsten Bögershausen <tboegi@xxxxxx> Commit "convert.c: refactor crlf_action" unified the crlf_handling and introdused a bug for "git ls-files --eol". The "text" attribute was shown as "text eol=lf" or "text eol=crlf", depending on core.autocrlf or core.eol. Correct this and add test cases in t0027. Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> --- This fix needs to go on top of tb/conversion convert.c | 3 ++- t/t0027-auto-crlf.sh | 47 ++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/convert.c b/convert.c index 18af685..0bc32ec 100644 --- a/convert.c +++ b/convert.c @@ -708,7 +708,7 @@ static enum crlf_action git_path_check_crlf(struct git_attr_check *check) const char *value = check->value; if (ATTR_TRUE(value)) - return text_eol_is_crlf() ? CRLF_TEXT_CRLF : CRLF_TEXT_INPUT; + return CRLF_TEXT; else if (ATTR_FALSE(value)) return CRLF_BINARY; else if (ATTR_UNSET(value)) @@ -792,6 +792,7 @@ static void convert_attrs(struct conv_attrs *ca, const char *path) ca->crlf_action = CRLF_TEXT_INPUT; else if (eol_attr == EOL_CRLF) ca->crlf_action = CRLF_TEXT_CRLF; + ca->attr_action = ca->crlf_action; } else { ca->drv = NULL; ca->crlf_action = CRLF_UNDEFINED; diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh index fc4c628..f9c92c6 100755 --- a/t/t0027-auto-crlf.sh +++ b/t/t0027-auto-crlf.sh @@ -159,6 +159,39 @@ stats_ascii () { } +attr_ascii () { + case "$1" in + "-text") echo "-text" ;; + lf) echo "text eol=lf" ;; + crlf) echo "text eol=crlf" ;; + text) + case "$2" in + "") echo "text" ;; + lf) echo "text eol=lf" ;; + crlf) echo "text eol=crlf" ;; + *) echo invalid_attr2 "$2" ;; + esac + ;; + auto) + case "$2" in + "") echo "text=auto" ;; + lf) echo "text=auto eol=lf" ;; + crlf) echo "text=auto eol=crlf" ;; + *) echo invalid_attr2 "$2" ;; + esac + ;; + "") + case "$2" in + "") echo "" ;; + lf) echo "text eol=lf" ;; + crlf) echo "text eol=crlf" ;; + *) echo invalid_attr2 "$2" ;; + esac + ;; + *)echo invalid_attr1 "$1" ;; + esac +} + check_files_in_repo () { crlf=$1 attr=$2 @@ -228,15 +261,15 @@ checkout_files () { test_expect_success "ls-files --eol attr=$attr $ident $aeol core.autocrlf=$crlf core.eol=$ceol" ' test_when_finished "rm expect actual" && sort <<-EOF >expect && - i/crlf w/$(stats_ascii $crlfname) crlf_false_attr__CRLF.txt - i/mixed w/$(stats_ascii $lfmixcrlf) crlf_false_attr__CRLF_mix_LF.txt - i/lf w/$(stats_ascii $lfname) crlf_false_attr__LF.txt - i/-text w/$(stats_ascii $lfmixcr) crlf_false_attr__LF_mix_CR.txt - i/-text w/$(stats_ascii $crlfnul) crlf_false_attr__CRLF_nul.txt - i/-text w/$(stats_ascii $crlfnul) crlf_false_attr__LF_nul.txt + i/crlf w/$(stats_ascii $crlfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF.txt + i/mixed w/$(stats_ascii $lfmixcrlf) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_mix_LF.txt + i/lf w/$(stats_ascii $lfname) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF.txt + i/-text w/$(stats_ascii $lfmixcr) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_mix_CR.txt + i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__CRLF_nul.txt + i/-text w/$(stats_ascii $crlfnul) attr/$(attr_ascii $attr $aeol) crlf_false_attr__LF_nul.txt EOF git ls-files --eol crlf_false_attr__* | - sed -e "s!attr/[^ ]*!!g" -e "s/ / /g" -e "s/ */ /g" | + sed -e "s/ / /g" -e "s/ */ /g" | sort >actual && test_cmp expect actual ' -- 2.7.0.303.g2c4f448.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html