subversion-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James French <>
Subject RE: svn:eol-style native and reintegrate merge
Date Fri, 05 Oct 2012 11:59:14 GMT

Fix a bug in propset which could prevent updating cached values related
   to EOL expansion in wc.db.
     Incorrect behaviour, subtle working copy corruption.
     +1: stsp, rhuijben, philip

This was a 1.7.6 fix and it sounds scarily pertinent....

From: James French []
Sent: 05 October 2012 09:58
Subject: RE: svn:eol-style native and reintegrate merge

From: James French []
Sent: 04 October 2012 22:39
Subject: svn:eol-style native and reintegrate merge


Using svn 1.7.6 and working on a dev branch I wrote a script to set svn:eol-style=native on
all source code files, because we develop on Mac and PC. When I tried to check in it kept
failing on files that had inconsistent line endings so I kept fixing them until I was able
to check in. So far so good. The diff of the checkin showed that files with consistent line
endings (99% of them) simply had the svn:eol-style=native property on them which is what I
expected. Now that I come to reintegrate however I have had a shock - it has converted all
files to unix line endings (and I'm on a PC). We do our sync up merges with the --ignore-eol-style
style switch (to be honest I'm not sure exactly what this does). I tried reintegrating with
and without switch and it does the same - everything has unix line endings. Maybe its just
some weird glitch and it won't really change the line endings but I'm too scared to check
in to find out. Tomorrow I'm going to try with 1.6 and see what that does.

What the hell is going on?


Thanks Thorsten for your reply, replying here for simplicity.  It is primarily a windows codebase
and all source code has always had windows line endings. I am thoroughly confused. I tried
the reintegrate merge with svn 1.6.18. With --ignore-eol-style the merge went through with
no conflicts and the files in my working copy all still had windows line endings (as it should
be). However, when I did a diff it still showed every line of every file as having changed,
even though there was no physical difference on disk. When I diff with --ignore-eol-style
only the svn:eol-style native property changes show up. Why is the diff showing line changes?
I guess its because its telling me that the internal data has been changed to LF line endings.
Fair enough. Still seems weird that a working copy diff should show this though. I still wonder
whether this whole native eol thing is going to bite me in the arse later and cause a load
of conflicts that rattle around the codebase for ages (over the years svn has unfortunately
taught me to expect this kind of stuff).

What I don't accept though is that svn 1.7 is performing correctly. The merge *physically
changed* all the source files in my working copy to LF line endings on a windows boc. That
*cannot* be right.


View raw message