2014-01-27 6 views
3

У меня есть исходный репозиторий, который используется как от Windows, так и Linux.Предотвращение нормализации EOL для CSV-файлов

Я знаю, что Git будет автоматически конвертировать EOL в местный стандарт: \ г \ п на Windows, и \ п на Linux.

Это не проблема для исходных файлов.

Но у меня есть некоторые CSV файлы, которые используют фиксированный формат с заданным EOL символа (\ г \ п), которые не должны быть изменены, но Git преобразует их тоже, разбивая код.

Я пытался предотвратить преобразование EOL для CSV-файлов путем создания .gitattributes файл в корне, рядом с файлом .gitignore, со следующим содержанием:

*.csv -text 

Я ве применять то, что я понял из: http://git-scm.com/docs/gitattributes

Но Git еще преобразование \ г \ п к \ п на Linux.

Должен ли я играть с другой настройкой, такой как auto.crlf?

Обратите внимание, что у меня ограниченный контроль локального репозитория Linux, поскольку он управляется сервером непрерывной интеграции Jenkins.

Спасибо за любой ввод.

+0

расширений файлов на linux чувствительны к регистру. Действительно ли ваши файлы CSV * .CSV? Попробуйте добавить несколько вариантов case в файл .gitattributes. –

+0

Вы пробовали '* .csv eol = crlf'? –

+0

@PaulHicks: спасибо, но все расширения «csv» в нижнем регистре. – Pragmateek

ответ

5

Обратите внимание, что git использует LF как внутреннее представление EOL.

Это означает, что в вашем случае файлы * .csv были изменены, когда они были добавлены/зафиксированы.

Таким образом, решение идет примерно так:

  1. удалить все * .csv файлы, совершить что изменение
  2. редактировать .gitattributes, совершить
  3. добавить обратно все *.CSV-файлов, совершают снова

На самом деле, это может быть все сделано в одном коммит, со следующими командами:

### ... update .gitattributes 
git rm --cached '*.csv' 
### ... find -name '*.csv' -print0| xargs -0 unix2dos 
git add '*.csv' 
git add .gitattributes 
git commit 

Объяснение:

  • git rm --cached удаляет все CSV-файлы из индекса, оставляя их на диске;
  • обеспечивают файлы имеют CRLF окончаний строк (я использую unix2dos в качестве примера)
  • git add '*.csv' добавляет их обратно, на этот раз без каких-либо преобразований, в соответствии с новой версией .gitattributes
+0

Блестящий! Он работает отлично. Жаль, что нам нужно полагаться на такое обходное решение. Благодаря! :) – Pragmateek

 Смежные вопросы

  • Нет связанных вопросов^_^