Re: crlf with git-svn driving me nuts...
- From
Dmitry Potapov <dpotapov@gmail.com>
- Date
- Apr 17, 2008, 09:43 UTC
- Message-ID
- <20080417094342.GM3133@dpotapov.dyndns.org>
- In-Reply-To
- <320075ff0804170007k5171eb72n68882679f62fa238@mail.gmail.com>
On Thu, Apr 17, 2008 at 08:07:27AM +0100, Nigel Magnay wrote:
Show 9 quoted lines
> > This has nothing to do with changing core.autocrlf after checkout - > it's a problem with *any* repo with CRLF files, being checked out on a > core.autocrlf=true machine, which basically is any windows machine. > > The current 'isDirty' check seems to be something like > > isDirty = ( wc.file.mtime > someValue ) && ( repository.file != > filter(wc.file) )
Basically, yes.
Show 5 quoted lines
> > I'm saying it ought to be something like > > isDirty = ( wc.file.mtime > someValue ) && (sha1(repository.file) != > sha1(wc.file) ) && ( repository.file != filter(wc.file) )
I don't think it is reasonable. Files inside of the repository and in the work are not meant to be the same. What if I have $Id$ expansion or something else. What could make sense is to add an additional check: && convert_to_work_tree(repository.file) != wc.file but it should be optional, so it will not penalize those who do need or do not want this extra check.
Show 16 quoted lines
> > > > > > But fixing that minor bug still leads to badness for the user. Doing > > > (on a core.autocrlf=true machine) a checkout of any revision > > > containing a file that is (currently) CRLF in the repository, and your > > > WC is *immediately* dirty. However technically correct that is, it > > > doesn't fit most people's user model of an SCM, because they haven't > > > made any modification. > > > > IMHO, the only sane way is never store CRLF in the Git repository. > > You can have whatever ending you like in your work tree, but inside > > of Git, LF is the actually marker of the end-of-line. > > > > Great. I'll go and argue with the team using svn, who don't even > *notice* this issue, and try to get them to adjust the metadata on > every single file in the repository.
Maybe, you can teach git-svn to be smarter... I mean storing text files in Git repo with CRLF is stupid, so, perhaps, git-svn can do a better job converting CRLF<->LF when it exports and imports from/to SVN.
Show 8 quoted lines
> > Then, for a bonus, I'll try the same with every OSS project that I'm > tracking with git-svn. :-( > > I get that things are horribly broken if you get CRLF in your > repository. But it's unreasonable to expect the ability to bend the > rest of the world to what's convenient for me! Some of our windows > coders probably even *like* svn:eol-style=CRLF !
You can use Git and have CRLF in your work tree. You just need to have autocrlf=true for that. _Inside_ of Git, only LF is the end of line. How you store in SVN, it is a separate issue with git-svn. I guess, git-svn needs improvement in this area...
Dmitry