Лучшие практики для кросс-платформенной конфигурации мерзавца?

Контекст

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

[core]
    autocrlf = true
    safecrlf = false

Проблема

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

Вопрос

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

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

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

47
задан 2 revs, 2 users 100% 4 April 2010 в 09:15
поделиться

3 ответа

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

Вывод такой:

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

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

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

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

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

32
ответ дан 26 November 2019 в 19:41
поделиться

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

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

-2
ответ дан 26 November 2019 в 19:41
поделиться

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

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

54
ответ дан 26 November 2019 в 19:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: