t0027: Add repoMIX and LF_nul
PATCH v2 1/1 t0027: Add repoMIX and LF_nul
"new safer autocrlf handling":
Check if eols in a file are converted at commit, when the file has CR (or CLLF) in the repo (technically speaking in the index). Add a test-file repoMIX with mixed line-endings.
When converting LF->CRLF or CRLF->LF: check the warnings
checkout_files():
Checking out CRLF_nul and checking for eol coversion does not make much sense (CRLF will stay CRLF).
Use the file LF_nul instead: It is handled a binary in "auto" modes, and when declared as text the LF may be replaced with CRLF, depending on the configuration
---
Changes since V1:
Use TAB for indentation at on place (Thanks Eric)
t/t0027-auto-crlf.sh | 157 ++++++++++++++++++++++++++++----------------------- 1 file changed, 85 insertions(+), 72 deletions(-)
t/t0027-auto-crlf.sh +85 -72
@@ -71,12 +71,21 @@ commit_check_warn () { attr=$2 lfname=$3 crlfname=$4 - lfmixcrlf=$5 - lfmixcr=$6 - crlfnul=$7 - create_gitattributes "$attr" && + repoMIX=$5 + lfmixcrlf=$6 + lfmixcr=$7 + crlfnul=$8 pfx=crlf_${crlf}_attr_${attr} - for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul + # Special handling for repoMIX: It should already be in the repo + # with CRLF + f=repoMIX + fname=${pfx}_$f.txt + echo >.gitattributes && + cp $f $fname && + git -c core.autocrlf=false add $fname 2>"${pfx}_$f.err" && + git commit -m "repoMIX" && + create_gitattributes "$attr" && + for f in LF CRLF repoMIX LF_mix_CR CRLF_mix_LF LF_nul CRLF_nul do fname=${pfx}_$f.txt && cp $f $fname &&
@@ -120,7 +129,7 @@ checkout_files () { git config core.autocrlf $crlf && pfx=eol_${eol}_crlf_${crlf}_attr_${attr}_ && src=crlf_false_attr__ && - for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul + for f in LF CRLF LF_mix_CR CRLF_mix_LF LF_nul do rm $src$f.txt && if test -z "$eol"; then
@@ -142,8 +151,8 @@ checkout_files () { test_expect_success "checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=LF_mix_CR" " compare_ws_file $pfx $lfmixcr ${src}LF_mix_CR.txt " - test_expect_success "checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=CRLF_nul" " - compare_ws_file $pfx $crlfnul ${src}CRLF_nul.txt + test_expect_success "checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=LF_nul" " + compare_ws_file $pfx $crlfnul ${src}LF_nul.txt " }
@@ -155,6 +164,7 @@ test_expect_success 'setup master' ' git commit -m "add .gitattributes" "" && printf "line1\nline2\nline3" >LF && printf "line1\r\nline2\r\nline3" >CRLF && + printf "line1\r\nline2\nline3" >repoMIX && printf "line1\r\nline2\nline3" >CRLF_mix_LF && printf "line1\nline2\rline3" >LF_mix_CR && printf "line1\r\nline2\rline3" >CRLF_mix_CR &&
@@ -181,40 +191,41 @@ else WAMIX=CRLF_LF fi +# attr LF CRLF repoMIX CRLFmixLF LFmixCR CRLFNUL test_expect_success 'commit files empty attr' ' - commit_check_warn false "" "" "" "" "" "" && - commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "" "" && - commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "" "" + commit_check_warn false "" "" "" "" "" "" "" && + commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" "" && + commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "" ' test_expect_success 'commit files attr=auto' ' - commit_check_warn false "auto" "$WILC" "$WICL" "$WAMIX" "" "" && - commit_check_warn true "auto" "LF_CRLF" "" "LF_CRLF" "" "" && - commit_check_warn input "auto" "" "CRLF_LF" "CRLF_LF" "" "" + commit_check_warn false "auto" "$WILC" "$WICL" "$WAMIX" "$WAMIX" "" "" && + commit_check_warn true "auto" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" "" && + commit_check_warn input "auto" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "" ' test_expect_success 'commit files attr=text' ' - commit_check_warn false "text" "$WILC" "$WICL" "$WAMIX" "$WILC" "$WICL" && - commit_check_warn true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" && - commit_check_warn input "text" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" + commit_check_warn false "text" "$WILC" "$WICL" "$WAMIX" "$WAMIX" "$WILC" "$WICL" && + commit_check_warn true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" && + commit_check_warn input "text" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" ' test_expect_success 'commit files attr=-text' ' - commit_check_warn false "-text" "" "" "" "" "" && - commit_check_warn true "-text" "" "" "" "" "" && - commit_check_warn input "-text" "" "" "" "" "" + commit_check_warn false "-text" "" "" "" "" "" "" && + commit_check_warn true "-text" "" "" "" "" "" "" && + commit_check_warn input "-text" "" "" "" "" "" "" ' test_expect_success 'commit files attr=lf' ' - commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && - commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && - commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" + commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && + commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && + commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" ' test_expect_success 'commit files attr=crlf' ' - commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" && - commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" && - commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" + commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" && + commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" && + commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" ' test_expect_success 'create files cleanup' '
@@ -268,79 +279,81 @@ test_expect_success 'commit -text' ' # eol acrlf # ---------------------------------------------- # What we want to have in the working tree: -if test_have_prereq MINGW +if test_have_prereq NATIVE_CRLF then MIX_CRLF_LF=CRLF MIX_LF_CR=CRLF_mix_CR NL=CRLF +LFNUL=CRLF_nul else MIX_CRLF_LF=CRLF_mix_LF MIX_LF_CR=LF_mix_CR NL=LF +LFNUL=LF_nul fi export CRLF_MIX_LF_CR MIX NL -checkout_files lf false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf input "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "auto" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files lf input "auto" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files lf false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf input "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "auto" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files lf input "auto" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files lf true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files lf input "text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf input "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files lf input "text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf input "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf input "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files lf false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files lf true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files lf input "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files crlf false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf false "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files crlf true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul +checkout_files crlf false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf false "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files crlf true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul checkout_files crlf false "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files crlf true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files crlf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files crlf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files crlf false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files crlf true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files "" false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" input "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR CRLF_nul -checkout_files "" true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files "" input "auto" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR CRLF_nul +checkout_files "" false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" input "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR LF_nul +checkout_files "" true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files "" input "auto" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR $LFNUL checkout_files "" true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files "" input "text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" input "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files "" input "text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" input "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" input "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files "" false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files "" true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files "" input "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files native false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR CRLF_nul -checkout_files native true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files native false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR CRLF_nul +checkout_files native false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR LF_nul +checkout_files native true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files native false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR $LFNUL checkout_files native true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files native false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files native false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files native false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files native true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul
Signature · 1 line
2.2.0.rc1.790.ge19fcd2
Hi Torsten,
Quoted 6 lines · Torsten Bögershausen
"new safer autocrlf handling":
Check if eols in a file are converted at commit, when the file has CR (or CLLF) in the repo (technically speaking in the index). Add a test-file repoMIX with mixed line-endings.
When convertingLF->CRLForCRLF->LF: check the warnings
Quoted 6 lines
checkout_files():
Checking outCRLF_nuland checking for eol coversion does not make much sense (CRLF will stay CRLF).
Use the fileLF_nulinstead: It is handled a binary in "auto" modes, and when declared as text the LF may be replaced with CRLF, depending on the configuration
Works precisely as advertised on Windows (tested on top of Git for Windows 2.3.6 release 2).
Quoted 1 line
Signed-off-by Torsten Bögershausen <[email protected]>
FWIW Acked-by: Johannes Schindelin <[email protected]>
Ciao,
Dscho
Quoted 3 lines · Torsten Bögershausen
"new safer autocrlf handling":
Check if eols in a file are converted at commit, when the file has CR (or CLLF) in the repo (technically speaking in the index).
s/CLLF/CRLF/? (no need to resend for this; I'll locally amend)
Quoted 6 lines
Add a test-file repoMIX with mixed line-endings. When converting
LF->CRLForCRLF->LF: check the warnings
checkout_files():
Checking outCRLF_nuland checking for eol coversion does not make much sense (CRLF will stay CRLF).
Hmph, would it still make sense to make sure that CRLF will stay CRLF so that future changes to break this expectation can be caught? Not that such a breakage is likely...
Quoted 3 lines
Use the file
LF_nulinstead: It is handled a binary in "auto" modes, and when declared as text the LF may be replaced with CRLF, depending on the configuration
Makes sense. Thanks.
Quoted 253 lines
Signed-off-by Torsten Bögershausen <[email protected]>---
Changes since V1:
Use TAB for indentation at on place (Thanks Eric)t/t0027-auto-crlf.sh | 157 ++++++++++++++++++++++++++++----------------------- 1 file changed, 85 insertions(+), 72 deletions(-)t/t0027-auto-crlf.sh +85
-72@@ -71,12 +71,21 @@ commit_check_warn () { attr=$2 lfname=$3 crlfname=$4 - lfmixcrlf=$5 - lfmixcr=$6 - crlfnul=$7 - create_gitattributes "$attr" && + repoMIX=$5 + lfmixcrlf=$6 + lfmixcr=$7 + crlfnul=$8 pfx=crlf_${crlf}_attr_${attr} - for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul + # Special handling for repoMIX: It should already be in the repo + # with CRLF + f=repoMIX + fname=${pfx}_$f.txt + echo >.gitattributes && + cp $f $fname && + git -c core.autocrlf=false add $fname 2>"${pfx}_$f.err" && + git commit -m "repoMIX" && + create_gitattributes "$attr" && + for f in LF CRLF repoMIX LF_mix_CR CRLF_mix_LF LF_nul CRLF_nul do fname=${pfx}_$f.txt && cp $f $fname &&@@ -120,7 +129,7 @@ checkout_files () { git config core.autocrlf $crlf && pfx=eol_${eol}_crlf_${crlf}_attr_${attr}_ && src=crlf_false_attr__ && - for f in LF CRLF LF_mix_CR CRLF_mix_LF CRLF_nul + for f in LF CRLF LF_mix_CR CRLF_mix_LF LF_nul do rm $src$f.txt && if test -z "$eol"; then@@ -142,8 +151,8 @@ checkout_files () { test_expect_success "checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=LF_mix_CR" " compare_ws_file $pfx $lfmixcr ${src}LF_mix_CR.txt " - test_expect_success "checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=CRLF_nul" " - compare_ws_file $pfx $crlfnul ${src}CRLF_nul.txt + test_expect_success "checkout core.eol=$eol core.autocrlf=$crlf gitattributes=$attr file=LF_nul" " + compare_ws_file $pfx $crlfnul ${src}LF_nul.txt " }@@ -155,6 +164,7 @@ test_expect_success 'setup master' ' git commit -m "add .gitattributes" "" && printf "line1\nline2\nline3" >LF && printf "line1\r\nline2\r\nline3" >CRLF && + printf "line1\r\nline2\nline3" >repoMIX && printf "line1\r\nline2\nline3" >CRLF_mix_LF && printf "line1\nline2\rline3" >LF_mix_CR && printf "line1\r\nline2\rline3" >CRLF_mix_CR &&@@ -181,40 +191,41 @@ else WAMIX=CRLF_LF fi +# attr LF CRLF repoMIX CRLFmixLF LFmixCR CRLFNUL test_expect_success 'commit files empty attr' ' - commit_check_warn false "" "" "" "" "" "" && - commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "" "" && - commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "" "" + commit_check_warn false "" "" "" "" "" "" "" && + commit_check_warn true "" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" "" && + commit_check_warn input "" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "" ' test_expect_success 'commit files attr=auto' ' - commit_check_warn false "auto" "$WILC" "$WICL" "$WAMIX" "" "" && - commit_check_warn true "auto" "LF_CRLF" "" "LF_CRLF" "" "" && - commit_check_warn input "auto" "" "CRLF_LF" "CRLF_LF" "" "" + commit_check_warn false "auto" "$WILC" "$WICL" "$WAMIX" "$WAMIX" "" "" && + commit_check_warn true "auto" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" "" && + commit_check_warn input "auto" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "" ' test_expect_success 'commit files attr=text' ' - commit_check_warn false "text" "$WILC" "$WICL" "$WAMIX" "$WILC" "$WICL" && - commit_check_warn true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" && - commit_check_warn input "text" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" + commit_check_warn false "text" "$WILC" "$WICL" "$WAMIX" "$WAMIX" "$WILC" "$WICL" && + commit_check_warn true "text" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" && + commit_check_warn input "text" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" ' test_expect_success 'commit files attr=-text' ' - commit_check_warn false "-text" "" "" "" "" "" && - commit_check_warn true "-text" "" "" "" "" "" && - commit_check_warn input "-text" "" "" "" "" "" + commit_check_warn false "-text" "" "" "" "" "" "" && + commit_check_warn true "-text" "" "" "" "" "" "" && + commit_check_warn input "-text" "" "" "" "" "" "" ' test_expect_success 'commit files attr=lf' ' - commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && - commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && - commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" + commit_check_warn false "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && + commit_check_warn true "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" && + commit_check_warn input "lf" "" "CRLF_LF" "CRLF_LF" "CRLF_LF" "" "CRLF_LF" ' test_expect_success 'commit files attr=crlf' ' - commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" && - commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" && - commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "" + commit_check_warn false "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" && + commit_check_warn true "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" && + commit_check_warn input "crlf" "LF_CRLF" "" "LF_CRLF" "LF_CRLF" "LF_CRLF" "" ' test_expect_success 'create files cleanup' '@@ -268,79 +279,81 @@ test_expect_success 'commit -text' ' # eol acrlf # ---------------------------------------------- # What we want to have in the working tree: -if test_have_prereq MINGW +if test_have_prereq NATIVE_CRLF then MIX_CRLF_LF=CRLF MIX_LF_CR=CRLF_mix_CR NL=CRLF +LFNUL=CRLF_nul else MIX_CRLF_LF=CRLF_mix_LF MIX_LF_CR=LF_mix_CR NL=LF +LFNUL=LF_nul fi export CRLF_MIX_LF_CR MIX NL -checkout_files lf false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf input "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "auto" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files lf input "auto" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files lf false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf input "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "auto" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files lf input "auto" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files lf true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files lf input "text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files lf input "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files lf input "text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf input "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files lf input "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files lf false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files lf true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files lf input "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files crlf false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf false "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files crlf true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul +checkout_files crlf false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf false "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files crlf true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul checkout_files crlf false "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files crlf true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files crlf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files crlf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files crlf false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files crlf true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files crlf false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files crlf true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files "" false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" input "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR CRLF_nul -checkout_files "" true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files "" input "auto" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR CRLF_nul +checkout_files "" false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" input "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR LF_nul +checkout_files "" true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files "" input "auto" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR $LFNUL checkout_files "" true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files "" input "text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" input "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files "" input "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files "" input "text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" input "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files "" input "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files "" false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files "" true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files "" input "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files native false "" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native true "" CRLF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR CRLF_nul -checkout_files native true "auto" CRLF CRLF CRLF LF_mix_CR CRLF_nul -checkout_files native false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR CRLF_nul +checkout_files native false "" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native true "" CRLF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native false "auto" $NL CRLF $MIX_CRLF_LF LF_mix_CR LF_nul +checkout_files native true "auto" CRLF CRLF CRLF LF_mix_CR LF_nul +checkout_files native false "text" $NL CRLF $MIX_CRLF_LF $MIX_LF_CR $LFNUL checkout_files native true "text" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul -checkout_files native false "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native true "-text" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native false "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul -checkout_files native true "lf" LF CRLF CRLF_mix_LF LF_mix_CR CRLF_nul +checkout_files native false "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native true "-text" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native false "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul +checkout_files native true "lf" LF CRLF CRLF_mix_LF LF_mix_CR LF_nul checkout_files native false "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul checkout_files native true "crlf" CRLF CRLF CRLF CRLF_mix_CR CRLF_nul
Quoted 11 lines · Junio C Hamano
Quoted 3 lines · Torsten Bögershausen
"new safer autocrlf handling":
Check if eols in a file are converted at commit, when the file has CR (or CLLF) in the repo (technically speaking in the index).s/CLLF/CRLF/? (no need to resend for this; I'll locally amend)
Quoted 3 lines
Add a test-file repoMIX with mixed line-endings. When converting
LF->CRLForCRLF->LF: check the warnings
Quoted 7 lines
Quoted 3 lines
checkout_files():
Checking outCRLF_nuland checking for eol coversion does not make much sense (CRLF will stay CRLF).Hmph, would it still make sense to make sure that CRLF will stay CRLF so that future changes to break this expectation can be caught? Not that such a breakage is likely...
Thanks for amending.
We have the file CRLF (and CRLFmixLF), where we check that CRLF stays CRLF and is not converted into CRLFLF.
The LF_nul is to test the "auto text detection":
It should not be converted into CRLF_nul in "auto mode", but should be converted when declared as "text" in .gitattributes.
Quoted 4 lines · Torsten Bögershausen
Quoted 3 lines
Hmph, would it still make sense to make sure that CRLF will stay CRLF so that future changes to break this expectation can be caught? Not that such a breakage is likely...
Quoted 8 lines
Thanks for amending.
We have the file CRLF (and CRLFmixLF), where we check that CRLF stays CRLF and is not converted into CRLFLF.
The
LF_nulis to test the "auto text detection":
It should not be converted intoCRLF_nulin "auto mode", but should be converted when declared as "text" in .gitattributes.
The two paragraphs above may explain why the test would pass with the current code, but is that sufficient assurance that other people in future changes would not break the "It should not be" with their bugs that you do not foresee at this moment? Whenever you say "it should not be", I hear "if the code somehow does that, somebody broke our code", which in turn suggests me that catching that condition with tests is a good thing.
Or am I hearing you incorrectly?