← Back to team overview

maria-developers team mailing list archive

Re: Windows line endings in MariaDB sources again (

 

Hi, Otto!

On Jun 24, Otto Kekäläinen wrote:
> 2016-06-24 18:58 GMT+03:00 Sergei Golubchik <serg@xxxxxxxxxxx>:
> >> 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@xxxxxxxxxxx


References