From: Jens Bauer <jens-lists@gpio.dk>
To: Jens Bauer <jens-lists@gpio.dk>
Cc: Jeff King <peff@peff.net>, Drew Northup <drew.northup@maine.edu>,
git@vger.kernel.org
Subject: Re: CRLF, LF ... CR ?
Date: Thu, 13 Sep 2012 20:17:20 +0200 [thread overview]
Message-ID: <20120913201720399747.156466ee@gpio.dk> (raw)
In-Reply-To: <20120913175300953765.9ccf790f@gpio.dk>
Hi Jeff and Drew.
I've been messing a little with clean/smudge filters; I think I understand them partly.
Let's call the file I have on the server that have <cr> line endings, "mypcb.osm".
If I clone the project, and do the following...
$ cat mypcb.osm | tr '\r' '\n'
I can read the file in the terminal window, otherwise it's just a "one-line-file".
So far, so good.
In my home directory, I have a .gitconfig file, here's the interesting part:
[core]
editor = nano
excludesfile = /Users/jens/.gitexcludes
attributesfile = /Users/jens/.gitattributes
[filter "cr"]
clean = tr '\\r' '\\n'
smudge = tr '\\n' '\\r'
In my home directory I added .gitattributes:
*.osm filter=cr
I've verified that .gitattributes is read; because if I add two spaces, like "*.osm filter = cr", I get an 'invalid filter name' error.
I've also verified that the clean/smudge lines are read; if I only have '\n' for instance, I get an error.
Now, when I clone the project, make a change and then issue this command...
$ git diff mypcb.osm
...I get a strange diff. On line 3, one of the files shows a lot of control-m (<cr>) lines.
After that, I see <lf> lines, all prefixed with a '+', as if they were added.
I think I might be nearly there, just missing some obvious detail somewhere.
Any hints ?
Love
Jens
On Thu, 13 Sep 2012 17:53:00 +0200, Jens Bauer wrote:
> Hi Jeff and Drew.
>
> Thank you for your quick replies! :)
>
> The diffs look nasty yes; that's my main issue.
> It can be worked around in many ways; eg a simple (but time consuming) way:
> $ git diff mypcb.osm >mypcb.diff && nano mypcb.diff
>
> -It'd be better to just pipe it into a regex, which changes CR to LF
> on the fly.
>
> OsmondPCB is able to read files that has mixed LF and CR. (By mixed,
> I do not talk about CRLF)
>
> The files do not need line-by-line diffing, but I think it would make
> it more readable.
> Thank you very much for the hint on the clean/smudge filters. I'll
> have a look at it. =)
>
>
> Love
> Jens
>
> On Thu, 13 Sep 2012 11:43:10 -0400, Jeff King wrote:
>> On Thu, Sep 13, 2012 at 11:34:50AM -0400, Drew Northup wrote:
>>
>>>> I've read that git supports two different line endings; either CRLF
>>>> or LF, but it does not support CR.
>>>> Would it make sense to add support for CR (if so, I hereby request
>>>> it as a new feature) ?
>>>
>>> Even if Git can't do CRLF/LF translation on a file it will still store
>>> and track the content of it it just fine. In fact you probably want
>>> translation completely disabled in this case.
>>
>> Yeah. If the files always should just have CR, then just don't ask git
>> to do any translation (by not setting the "text" attribute, or even
>> setting "-text" if you have something like autocrlf turned on globally),
>> and it will preserve the bytes exactly. I suspect diffs will look nasty
>> because we won't interpret CR as a line-ending, though.
>>
>> Do the files actually need line-by-line diffing and merging? If not,
>> then you are fine.
>>
>> If so, then it would probably be nice to store them with a canonical LF
>> in the repository, but convert to CR on checkout. Git can't do that
>> internally, but you could define clean/smudge filters to do so (see the
>> section in "git help attributes" on "Checking-out and checking-in";
>> specifically the "filter" subsection).
>>
>> -Peff
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-09-13 18:17 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-13 15:09 CRLF, LF ... CR ? Jens Bauer
2012-09-13 15:34 ` Drew Northup
2012-09-13 15:43 ` Jeff King
2012-09-13 15:53 ` Jens Bauer
2012-09-13 18:17 ` Jens Bauer [this message]
2012-09-13 18:23 ` Jeff King
2012-09-13 18:55 ` Jens Bauer
2012-09-13 18:34 ` Johannes Sixt
2012-09-13 19:13 ` Jens Bauer
2012-09-13 15:43 ` Erik Faye-Lund
2012-09-14 4:06 ` David Aguilar
2012-09-14 4:36 ` Jens Bauer
2012-09-14 4:51 ` Junio C Hamano
2012-09-26 8:42 ` David Aguilar
2012-09-26 10:12 ` Jens Bauer
2012-09-26 10:31 ` Jens Bauer
2012-09-27 6:16 ` Junio C Hamano
2012-09-27 13:42 ` Jens Bauer
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=20120913201720399747.156466ee@gpio.dk \
--to=jens-lists@gpio.dk \
--cc=drew.northup@maine.edu \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
/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).