tboegi@xxxxxx writes: > 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.autpcrlf or core.eol. > Correct this and add test cases in t0027. Sigh. I think I typofixed this when I queued the previous version while commenting on it. Do people not pay attention to what is queued in 'pu' these days? > > Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> > --- > convert.c | 18 +++++++++--------- > t/t0027-auto-crlf.sh | 33 ++++++++++++++++++++++++++------- > 2 files changed, 35 insertions(+), 16 deletions(-) I looked at the interdiff from the previous version; the updated parts looked sensible. Thanks, will queue. > > diff --git a/convert.c b/convert.c > index 18af685..d8b1f17 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)) > @@ -778,20 +778,20 @@ static void convert_attrs(struct conv_attrs *ca, const char *path) > } > > if (!git_check_attr(path, NUM_CONV_ATTRS, ccheck)) { > - enum eol eol_attr; > ca->crlf_action = git_path_check_crlf(ccheck + 4); > if (ca->crlf_action == CRLF_UNDEFINED) > ca->crlf_action = git_path_check_crlf(ccheck + 0); > ca->attr_action = ca->crlf_action; > ca->ident = git_path_check_ident(ccheck + 1); > ca->drv = git_path_check_convert(ccheck + 2); > - if (ca->crlf_action == CRLF_BINARY) > - return; > - eol_attr = git_path_check_eol(ccheck + 3); > - if (eol_attr == EOL_LF) > - ca->crlf_action = CRLF_TEXT_INPUT; > - else if (eol_attr == EOL_CRLF) > - ca->crlf_action = CRLF_TEXT_CRLF; > + if (ca->crlf_action != CRLF_BINARY) { > + enum eol eol_attr = git_path_check_eol(ccheck + 3); > + if (eol_attr == EOL_LF) > + 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..f33962b 100755 > --- a/t/t0027-auto-crlf.sh > +++ b/t/t0027-auto-crlf.sh > @@ -159,6 +159,25 @@ stats_ascii () { > > } > > + > +# contruct the attr/ returned by git ls-files --eol > +# Take none (=empty), one or two args > +attr_ascii () { > + case $1,$2 in > + -text,*) echo "-text" ;; > + text,) echo "text" ;; > + text,lf) echo "text eol=lf" ;; > + text,crlf) echo "text eol=crlf" ;; > + auto,) echo "text=auto" ;; > + auto,lf) echo "text=auto eol=lf" ;; > + auto,crlf) echo "text=auto eol=crlf" ;; > + lf,) echo "text eol=lf" ;; > + crlf,) echo "text eol=crlf" ;; > + ,) echo "" ;; > + *) echo invalid_attr "$1,$2" ;; > + esac > +} > + > check_files_in_repo () { > crlf=$1 > attr=$2 > @@ -228,15 +247,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 > ' -- 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