From b4e2f5ec6e3d8a005901a8efbb96a3a186bf9c06 Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Mon, 26 Nov 2012 00:24:00 +0000 Subject: [PATCH] Push the NATIVE_CRLF Makefile variable to C and added a test for native. The previous patch correctly points out that the NATIVE_CRLF setting is incorrectly set on Mingw git. However, the Makefile variable is not propagated to the C preprocessor and results in no change. This patch pushes the definition to the C code and adds a test to validate that when core.eol as native is crlf, we actually normalize text files to this line ending convention when core.autocrlf is false. Signed-off-by: Pat Thoyts --- Makefile | 3 +++ t/t0026-eol-config.sh | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/Makefile b/Makefile index eee916f438992c..f9b9ad830cd267 100644 --- a/Makefile +++ b/Makefile @@ -1455,6 +1455,9 @@ endif ifdef CYGWIN_V15_WIN32API COMPAT_CFLAGS += -DCYGWIN_V15_WIN32API endif +ifdef NATIVE_CRLF + BASIC_CFLAGS += -DNATIVE_CRLF +endif ifdef USE_NED_ALLOCATOR COMPAT_CFLAGS += -Icompat/nedmalloc diff --git a/t/t0026-eol-config.sh b/t/t0026-eol-config.sh index fe0164be62ad9a..a524f046b914c9 100755 --- a/t/t0026-eol-config.sh +++ b/t/t0026-eol-config.sh @@ -8,6 +8,20 @@ has_cr() { tr '\015' Q <"$1" | grep Q >/dev/null } +# core.eol crlf and core.autocrlf input are not permitted. +# this lets us check for the core.eol native being crlf. +set_native_eol_prereq() { + rm -rf eol && mkdir eol && + ( cd eol && + git init --quiet && + git config core.autocrlf input && + git config core.eol native && + git var core.eol 2> /dev/null + ) || + test_set_prereq NATIVE_EOL_IS_CRLF +} +set_native_eol_prereq + test_expect_success setup ' git config core.autocrlf false && @@ -80,4 +94,22 @@ test_expect_success 'autocrlf=true overrides unset eol' ' test -z "$onediff" -a -z "$twodiff" ' +test_expect_success NATIVE_EOL_IS_CRLF 'eol native is crlf' ' + + rm -rf native_eol && mkdir native_eol && + ( cd native_eol && + printf "*.txt text\n" > .gitattributes + printf "one\r\ntwo\r\nthree\r\n" > filedos.txt + printf "one\ntwo\nthree\n" > fileunix.txt + git init && + git config core.autocrlf false && + git config core.eol native && + git add filedos.txt fileunix.txt && + git commit -m "first" && + rm file*.txt && + git reset --hard HEAD && + has_cr filedos.txt && has_cr fileunix.txt + ) +' + test_done