Hi, Otto! On Jun 24, Otto Kekäläinen wrote:
2016-06-24 18:58 GMT+03:00 Sergei Golubchik
: dpkg-source: info: building mariadb-10.0 using existing ./mariadb-10.0_10.0.26.orig.tar.gz dpkg-source: info: local changes detected, the modified files are: mariadb-10.0/storage/connect/mysql-test/connect/std_data/boyswin.txt mariadb-10.0/storage/connect/mysql-test/connect/std_data/emp.txt mariadb-10.0/storage/connect/mysql-test/connect/std_data/expenses.txt dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/mariadb-10.0_10.0.26-1.diff.Yzwwhw
Sorry, I don't follow. How does the first (CRLF in specific files) cause the second (your dpkg-source error) ?
Somehow, despite the current .gitattributes, the std_data file line endings get converted by git during import/merge and the resulting repository CRLF files are only these:
./mysql-test/std_data/loaddata7.dat: ASCII text, with CRLF line terminators ./mysql-test/r/loadxml.result: ASCII text, with CRLF, LF line terminators ./mysql-test/r/perror-win.result: ASCII text, with CRLF, LF line terminators ./mysql-test/r/mysql_binary_mode.result: ASCII English text, with CRLF, LF line terminators ./mysql-test/r/func_regexp_pcre.result: UTF-8 Unicode C++ program text, with CRLF, CR, LF line terminators ./pcre/testdata/grepoutputN: ASCII text, with CRLF, CR, LF line terminators ./pcre/testdata/greppatN4: ASCII text, with CRLF line terminators
It just happened that these files have CRLF lines inside, while other *.result files have only LF lines. Git did not convert anything.
To get git not to change the line endings I defined in .git/info/attributes *.* binary * binary
-text means "not to change the line endings". binary means "-diff -merge -text", that is "do not do diffs on the file, do not try to merge them, do not change line endings". For result files, it's an overkill, -text is sufficient.
Only the files girls.txt was touched in 10.0.26, I didn't figure out why git wanted to import/update those other files. However, 10.0.26 introduced a storage/connect/.gitattributes file, maybe it lead to this situation.
It declares like this:
+# Declare files that will always have LF line endings on checkout. +*.result text eol=lf +mysql-test/connect/std_data/*.txt text eol=lf +mysql-test/connect/std_data/*.dat text eol=lf
Apparently connect developers what those files to have unix line endings, maybe we should follow suite.
Hmm. I thought that git only looks at top-level .gitattributes, so the second one is ignored. But If git also considers .gitattributes from subdirectories, I'll need to take a look at that second .gitattributes. Regards, Sergei Chief Architect MariaDB and security@mariadb.org