git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marius Storm-Olsen <marius@trolltech.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Junio C Hamano <gitster@pobox.com>,
	"Shawn O. Pearce" <spearce@spearce.org>,
	Julian Phillips <julian@quantumfyre.co.uk>,
	git@vger.kernel.org
Subject: Re: [PATCH 3/3] Teach "git branch" about --new-workdir
Date: Tue, 24 Jul 2007 21:36:06 +0200	[thread overview]
Message-ID: <46A654A6.5070802@trolltech.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0707241923450.14781@racer.site>

[-- Attachment #1: Type: text/plain, Size: 4238 bytes --]

>> 1) IMO, git should on Windows always do CRLF conversion, as this is what
>> Windows developers in general expect. (CRLF text-files that is, not the
>> conversion.) Meaning that
>>     core.autocrlf = Windows
> 
> I do not think so.
> 
> core.autocrlf is only about the relationship between the working tree and 
> the repository.
> 
> So if you want CR/LF line endings always, just do not set that flag 
> (which defaults to false).
> 
> If you want LF line endings in the repo, but not necessarily in the 
> working tree, set core.autocrlf to input.
> 
> If you want LF line endings sometimes, but CR/LF at other times, but do 
> not care if the revisions in the repository will have LF or CR/LF, do not 
> set that flag.

Ok, here we fundamentally disagree.
IMO Windows user expect files to be DOS style, since all other files
are.  Yes, most newer tools 'handle' Unix style files, but creating new
ones will mostly be DOS style. Some will actually wreak havoc on your
files, and start adding DOS line endings in the middle of your Unix line
ending file. I've seen it happen. So, dealing with Unix style text files
on Windows can be a problem for some people.

So, normally, when developing on Windows you'd expect DOS files, nothing
else. (Note that we're not talking about your average MinGW or Cygwin
user here, since they are known to the issues and how to tackle them)

> Git is really slowed down tremendously just by the fact that it runs on 
> Windows.  You should not add to that.

The auto crlf conversion is not the slow down here, and the time spent
there is negligible. I use autocrlf on all my repos on Windows, and
don't notice it. Filestat'ing on the other hand.. :-)


> IMHO in most cases -- even on Windows -- you do not want to set autocrlf 
> at all.  Because you do not need to store the file different from the 
> version you have in the working tree.

Not true. I believe, especially at the moment, most Git users on Windows
are mostly developing code in a cross-platform manner, and therefore
care about this problem.


> The only situation where I think it makes sense, is when you have both 
> Windows and Unix developers, _and_ your Windows tools sometimes produce 
> CR/LF stupidly.  But then I'd set it to "input".

That's ok _now_, because most of the Git user group is experienced
developer that understand the problem. I'm trying to see past that
state, and prepare Git for more 'common' usage on Windows. They'd expect
text files on Windows to be handled correctly, without any fuzz.
No tweaking of config options to make it work on Windows. No problems
with sharing repositories with Unix developers. Just work. That's not
the current state. But it could be.


> BTW no need to fuzz about binary files, which want to be in the
> object database without being converted.  Our heuristics has so far
> been pretty successful in discerning binary from text files.

Yeah, I have no beef with the binary detection. It seems to work fine.
At least I haven't had a problem with it yet, and it's not what we're
discussing.

Ok, I come from the Perforce world, so here how it works there:
1) Files are stored with Unix line endings in the repository.
2) Conversion is done on Windows (and older Macs) upon checkout, if the
file is a text file.
3) It has binary file detection when you add it to the depot, so if you
and to add a DOS line ending file to the repo, you have to mark it as a
binary file manually

Git does 1) and 2) already, and with the EOL detection in the repo file,
(when you've already detected that a file has changed, so there's not
much time wasted with that) to eliminate the 'yes' in point 6) in the
original mail, should help implement 3) above well enough. It's simply,
"If it was a CRLF file before, no need to convert it to LF now", and the
problem is largely fixed. Then it's only when we want to commit a new
CRLF file that we need a way to 'turning off' the autocrlf for just
_that_ file for _that_ commit. And presto, you'd have something which
most Windows users would expect. And Git would probably be adapted on
Windows more quickly, which this is all about. :-) IMHO.

--
.marius


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 187 bytes --]

  reply	other threads:[~2007-07-24 19:36 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-22 18:56 [PATCH 3/3] Teach "git branch" about --new-workdir Johannes Schindelin
2007-07-22 19:16 ` Daniel Barkalow
2007-07-22 19:24   ` Johannes Schindelin
2007-07-22 21:09 ` Julian Phillips
2007-07-22 21:25   ` Johannes Schindelin
2007-07-22 21:50     ` Julian Phillips
2007-07-22 21:59       ` Johannes Schindelin
2007-07-22 22:24         ` Julian Phillips
2007-07-22 22:46           ` Jakub Narebski
2007-07-22 23:37             ` Johannes Schindelin
2007-07-22 23:02           ` Johannes Schindelin
2007-07-23  3:56             ` Shawn O. Pearce
2007-07-23  4:45               ` Junio C Hamano
2007-07-23  5:14                 ` Shawn O. Pearce
2007-07-23  5:22                   ` Shawn O. Pearce
2007-07-23 10:32                 ` Johannes Schindelin
2007-07-23 10:42                   ` Johannes Schindelin
2007-07-24  8:19                 ` Marius Storm-Olsen
2007-07-24  9:02                   ` Johannes Schindelin
2007-07-24  9:47                     ` Junio C Hamano
2007-07-24 11:07                       ` Johannes Schindelin
2007-07-24 11:14                       ` Marius Storm-Olsen
2007-07-24 12:06                         ` Julian Phillips
2007-07-24 12:28                           ` Marius Storm-Olsen
2007-07-24 12:37                           ` Johannes Schindelin
2007-07-24 13:47                             ` Josef Weidendorfer
2007-07-24 13:54                               ` Johannes Schindelin
2007-07-24 14:21                                 ` Josef Weidendorfer
2007-07-25  0:09                           ` Jakub Narebski
2007-07-24 12:42                         ` Johannes Schindelin
2007-07-24 13:26                           ` Marius Storm-Olsen
2007-07-24 13:29                             ` Marius Storm-Olsen
2007-07-24 13:33                             ` Johannes Schindelin
2007-07-24 18:02                               ` Marius Storm-Olsen
2007-07-24 18:30                                 ` Johannes Schindelin
2007-07-24 19:36                                   ` Marius Storm-Olsen [this message]
2007-07-24 23:15                                     ` Alex Riesen
2007-07-25  6:47                                       ` Marius Storm-Olsen
2007-07-25  9:39                                         ` Johannes Schindelin
2007-07-25 10:22                                           ` Steven Grimm
2007-07-25 11:05                                           ` Andy Parkins
2007-07-25 12:10                                             ` Marius Storm-Olsen
2007-07-25 14:09                                               ` Johannes Schindelin
2007-07-25 20:40                                             ` Linus Torvalds
2007-07-26 11:51                                               ` Christian MICHON
2007-07-23  8:31             ` Julian Phillips

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=46A654A6.5070802@trolltech.com \
    --to=marius@trolltech.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=julian@quantumfyre.co.uk \
    --cc=spearce@spearce.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).