This patch add two tests to reproduce the problems described in thread "git rebase fail with CRLF conversion" <fb20a7d711fdd218f58f1f2090b1c515@xxxxxxxx> <http://thread.gmane.org/gmane.comp.version-control.git/228613> <http://marc.info/?l=git&m=137182211414404&w=2> - Add and commit a file with CRLF, - Add and commit a .gitattributes with text flag for the file, - Convert CRLF to LF in file, commit the change, - Rebase the whole on top of another parent The rebase currently failed. This scenario is repeated twice, first with core.safecrlf set to warn, a second time with core.safecrlf set to true. git diff will also fail when core.safecrlf is set to true and the file is not already converted to LF. Signed-off-by: Yann Droneaud <ydroneaud@xxxxxxxxxx> --- t/t0020-crlf.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/t/t0020-crlf.sh b/t/t0020-crlf.sh index 1a8f44c..12147ba 100755 --- a/t/t0020-crlf.sh +++ b/t/t0020-crlf.sh @@ -506,4 +506,56 @@ test_expect_success 'New CRLF file gets LF in repo' ' test_cmp alllf alllf2 ' +test_expect_success 'Prepare rebase test' ' + test_config core.autocrlf false && + test_config core.safecrlf warn && + test_config core.eol native && + git branch rebase-initial && + git checkout -b rebase-other rebase-initial && + git commit --allow-empty -m "Another commit" && + git checkout rebase-initial +' + +# git rebase will failed to apply the "normalization" commit +test_expect_success 'Rebase with core.safecrlf set to warn (default)' ' + test_config core.autocrlf false && + test_config core.safecrlf warn && + test_config core.eol native && + git checkout -b rebase-warn rebase-initial && + for w in A couple of lines ; do echo $w ; done | append_cr >rebase-warn.txt && + git add rebase-warn.txt && git commit -m "Added raw text" && + echo rebase-warn.txt text >> .gitattributes && + git add .gitattributes && git commit -m "Added .gitattributes" && + git rm --cached rebase-warn.txt && git reset --hard && + git add rebase-warn.txt && git commit -m "Normalized" && + git rebase rebase-other || { + git status && git diff && + git add rebase-warn.txt && git rebase --continue ; + } +' + +# +# git rebase will failed to apply the "normalization" commit +# additionnaly +# git diff and git add will failed when core.safecrlf is set to true +# +test_expect_success 'Rebase with core.safecrlf set to true' ' + test_config core.autocrlf false && + test_config core.safecrlf true && + test_config core.eol native && + git checkout -b rebase-true rebase-initial && + for w in Another couple of lines ; do echo $w ; done | append_cr >rebase-true.txt && + git add rebase-true.txt && git commit -m "Added raw text" && + echo rebase-true.txt text >> .gitattributes && + git add .gitattributes && git commit -m "Added .gitattributes" && + git diff || git add rebase-true.txt || + for w in Another couple of lines ; do echo $w ; done >rebase-true.txt && + git add rebase-true.txt && git commit -m "Normalized" && + git rebase rebase-other || { + git status && git diff || git add rebase-true.txt || + for w in Another couple of lines ; do echo $w ; done >rebase-true.txt && + git add rebase-true.txt && git rebase --continue ; + } +' + test_done -- 1.8.2.1 -- 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