Лучшие практики для кросс-платформенного git config? - PullRequest
47 голосов
/ 25 февраля 2010

Контекст

Ряд пользовательских файлов конфигурации моего приложения хранятся в git-репозитории для удобного совместного использования на нескольких машинах и разных платформах. Среди этих файлов конфигурации .gitconfig, который содержит следующие параметры для обработки символов перевода строки при возврате каретки

[core]
    autocrlf = true
    safecrlf = false

Проблема

Эти настройки также применяются на платформе GNU / Linux, что приводит к неясным ошибкам.

Вопрос

Каковы некоторые рекомендации для обработки этих специфических для платформы различий в файлах конфигурации?

Предлагаемое решение

Я понимаю, что эту проблему можно решить, имея ветку для каждой платформы и сохраняя общие элементы в мастере, и объединяясь с веткой платформы, когда мастер движется вперед. Мне интересно, есть ли более простые решения этой проблемы?

Ответы [ 3 ]

51 голосов
/ 02 марта 2010

Никогда не включайте autocrlf, это не вызывает ничего, кроме головной боли и печали.

Нет оправдания использованию \r\n на окнах, все приличные редакторы (по определению) могут обрабатывать \n.

31 голосов
/ 02 марта 2010

Я подробно рассмотрел настройки такого типа (crlf) в вопросе:
Распределение конфигурации git с кодом .

Вывод был:

*.java +crlf
*.txt +crlf
...
  • избегайте любых преобразований типов файлов, которые в этом не нуждаются, из-за различных побочных эффектов такого преобразования при слияниях, git status, среде оболочки и svn import (см. «»). распространение конфигурации git с кодом"для ссылок и ссылок).
  • избегайте конвертации crlf, если можете.

Теперь, что касается конкретной проблемы настроек для платформы , ветвление не всегда является правильным инструментом, особенно для данных, не связанных с программой (т. Е. Эти настройки не связаны с тем, что вы разрабатываете, только для VCS, хранящей историю вашего развития)

Как указано в вопросе Git: Как сохранить две ветви проекта и объединить только общие данные? :

Ваша жизнь станет намного проще, если вы поместите системно-зависимый код в разные каталоги и будете иметь дело с кроссплатформенными зависимостями в системе сборки (Make-файлы или что вы используете).

В этом случае, хотя ветки можно использовать для системно-зависимого кода, я бы порекомендовал каталог для системно-зависимых настроек средств поддержки со скриптом, способным создать соответствующий файл .gitattributes, чтобы применить правильные настройки в зависимости от Платформа развертывания репо.

0 голосов
/ 25 февраля 2010

Я думаю, что .gitconfig должен зависеть от операционной системы, которую использует пользователь. Пользователям Windows вообще не нужен autocrlf, а пользователям Linux - нет. Например. сохраните текстовые файлы с помощью crlf и попросите Git автоматически конвертировать файлы туда и обратно для пользователей Linux.

Возможно, вы также захотите проверить .gitattributes , который позволяет вам определить, какие файлы преобразованы, а какие нет. Если у вас есть файлы конфигурации только в одном месте, вы можете определить, что преобразование выполняется только в этом каталоге, чтобы быть в безопасности.

...