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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.