Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Clarifying/clearing up line ending issues in GIT

Tags:

git

We have a repository that was exported from subversion into git. This repository is used by Mac, Linux, and PC users. Needless to say the line endings are a mess. Some files end in CRLF, LF, or CR and some have a mix between all two or three in one file.

Adding autocrlf = true seems to fix things slightly. However the diffs come up quite strange at times, ie a one line edit to a file makes all lines appear changed in the diff (I assume it was due to the line endings for the file were all rewritten) and sometimes one line edits to a file works correctly.

Is there a website, or could someone please explain how we can sort this mess out? Is there a git setting we have to set, or do we have to do a bulk update of all the files to have a certain line ending or what?

Any help would be much appreciated as its quite a mess!

(The following stackoverflow post appears it might help, although it doesnt answer what happens when we have another mac or pc or linux user commit another patch)

like image 646
corydoras Avatar asked Oct 05 '09 23:10

corydoras


People also ask

How do I see line endings in github?

To tell what line endings a file in the repository is using, use git show to extract the file's contents. This will give you the contents without changing the line endings.

How does git store line endings?

Git store whole files as "blobs" and only do conversion when reading (checking out) or writing (indexing). Git does not store "neutralized lines". So yes, Git can save files with mixed line endings, but that's usually a bad practice to avoid.

Should I use CRLF or LF?

Whereas Windows follows the original convention of a carriage return plus a line feed ( CRLF ) for line endings, operating systems like Linux and Mac use only the line feed ( LF ) character. The history of these two control characters dates back to the era of the typewriter.


1 Answers

This related SO question will be of interest to you:

Trying to fix line-endings with git filter-branch, but having no luck

And here is a link to similar advice from Github.

Also, as mentioned in Greg Hewgill's post it is wise to verify that future committers use an editor which handles the new line-ending policy correctly.

When you say "Adding autocrlf = true seems to fix things slightly." I assume this was done in using .gitattributes.

like image 148
Tim Henigan Avatar answered Oct 18 '22 00:10

Tim Henigan