git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git rebase fail with CRLF conversion
@ 2013-06-21 13:41 Yann Droneaud
  2013-06-21 13:51 ` Yann Droneaud
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Yann Droneaud @ 2013-06-21 13:41 UTC (permalink / raw)
  To: git

Hi (again),

Following my previous email "Tracking vendor release with Git" [1][2],
and the advice from Git users/developers, I'm trying to use 
.gitattributes
to handle CRLF/LF conversion.

I'm following advices from:

  - "Dealing with line endings"
    https://help.github.com/articles/dealing-with-line-endings

  - "Tim's Blog, Mind the End of Your Line"
    http://timclem.wordpress.com/2012/03/01/mind-the-end-of-your-line/

  - "7.2 Customizing Git - Git Attributes"
    http://git-scm.com/book/ch7-2.html

  - "gitattributes(5) Manual Page"
    https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

While testing the behavor of Git regarding CRLF handling,
I've found git rebase fail when trying to apply a commit
that's going to fix/convert CRLF to LF.

I'm using the following script:

A file with CRLF end of line (EOL) "test" is added and commited,
then a file .gitattributes is added and commited.
The .gitattributes has a single line "test text" to ask git to do
EOL conversion.
After adding this .gitattributes file, Git start complaining about
the line ending to file "test". The file is fixed and commited.

Then this branch is rebased on top of another parent.
And here come the failures:


Most of the time git rebase failed with the following error:

  ...
  First, rewinding head to replay your work on top of it...
  Applying: Commit raw
  Applying: Added git attributes
  Applying: Normalization
  Using index info to reconstruct a base tree...
  Falling back to patching base and 3-way merge...
  error: Your local changes to the following files would be overwritten 
by merge:
        test
  Please, commit your changes or stash them before you can merge.
  Aborting
  Failed to merge in the changes.
  Patch failed at 0003 Normalization
  ...


But sometime it failed with another error:

with core.safecrlf = warn:

  ...
  First, rewinding head to replay your work on top of it...
  Applying: Commit raw
  Applying: Added git attributes
  warning: CRLF will be replaced by LF in test.
  The file will have its original line endings in your working 
directory.
  Applying: Normalization
  fatal: unrecognized input
  Repository lacks necessary blobs to fall back on 3-way merge.
  Cannot fall back to three-way merge.
  Patch failed at 0003 Normalization
  ...

with core.safecrlf = true:

  ...
  First, rewinding head to replay your work on top of it...
  Applying: Commit raw
  Applying: Added git attributes
  fatal: CRLF would be replaced by LF in test.
  Applying: Normalization
  fatal: unrecognized input
  Repository lacks necessary blobs to fall back on 3-way merge.
  Cannot fall back to three-way merge.
  Patch failed at 0003 Normalization
  ...


In thoses two latter cases, running "git add" does not fail with a 
fatal error: it does nothing.
I need to run "touch test" to make "git add" fail with error "fatal: 
CRLF would be replaced by LF in test.


I believe "git rebase" should not fail here, but more, it must not fail 
in a different fashion randomly.

Please find in reply to this email:
  - a shell script to demonstrate the behavor
  - a patch to t0020-crlf.sh to add two rebase tests.

1. <1370970410-7935-1-git-send-email-ydroneaud@opteya.com>
2. <http://thread.gmane.org/gmane.comp.version-control.git/227466>
    <http://marc.info/?l=git&m=137097069115462&w=2>


Regards

-- 
Yann Droneaud
OPTEYA

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-06-21 14:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-06-21 13:41 git rebase fail with CRLF conversion Yann Droneaud
2013-06-21 13:51 ` Yann Droneaud
2013-06-21 14:15 ` [PATCH] t0020-crlf: test rebase with text conversion and safecrlf Yann Droneaud
2013-06-21 14:24   ` Yann Droneaud
2013-06-21 14:29 ` git rebase fail with CRLF conversion Yann Droneaud

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).