
Beman Dawes
3) As a library maintainer, I want all line endings in my libraries to be faithfully preserved by Git, both at conversion and into the future. I see it as quite a black eye for Git if that can't happen.
Git is a "stupid content tracker," so at its lowest levels it doesn't know anything about text or line endings, and therefore they're preserved just like any other bits stored by Git. The only interesting question for Git is what happens to those line endings when a given file is checked out on a given system with a given set of user preferences and a given .gitattributes file. Subversion, on the other hand, has "smarts" about line endings that affect not only how they're checked out, but how they're stored on the server. It tries to remember whether a file is a text file (its whole MIME-type actually) and what kind of line endings it was stored with. So the question of what it means to "preserve" line endings stored in Subversion is a bit more complicated. Right now our translation pulls the bytes out of Subversion and stores them literally in Git, so by definition there's no lost information /except/ what may be given by SVN attributes like svn:mime-type and svn:eol-style. I dont' remember exactly what problem we're trying to solve here; I read https://groups.google.com/forum/#!topic/boost-devel-archive/guyHrDlW0Hc which documents the initial evolution of the issue. We may have concluded eventually that people were trying to correct mistakes in SVN history, like checking in files with the wrong attributes, and if that were the case, I would surely have decided that this should not be the role of the conversion tool.