Разъяснение / устранение проблем с окончанием строки в GIT - PullRequest
9 голосов
/ 06 октября 2009

У нас есть репозиторий, который был экспортирован из subversion в git. Этот репозиторий используется пользователями Mac, Linux и ПК. Само собой разумеется, что конец строки - беспорядок. Некоторые файлы оканчиваются на CRLF, LF или CR, а некоторые содержат смесь всех двух или трех в одном файле.

Добавление autocrlf = true, похоже, немного исправляет ситуацию. Однако иногда различия выглядят довольно странно, то есть редактирование одной строки файла приводит к изменению всех строк в разнице (я полагаю, это произошло из-за того, что все концы строк для файла были переписаны), и иногда редактирование одной строки в файл работает правильно.

Есть ли веб-сайт, или кто-то может объяснить, как мы можем разобраться в этом беспорядке? Нужно ли установить параметр git или выполнить массовое обновление всех файлов, чтобы получить определенное окончание строки или что?

Любая помощь будет высоко ценится, так как это беспорядок!

(следующая запись stackoverflow может помочь, хотя и не отвечает на то, что происходит, когда другой пользователь mac, pc или linux фиксирует другой патч)

Ответы [ 2 ]

5 голосов
/ 06 октября 2009

Этот связанный с вами вопрос будет представлять интерес для вас:

Попытка исправить окончания строк с помощью git filter-branch, но безуспешно

А вот ссылка на аналогичный совет от Github.

Кроме того, как уже упоминалось в сообщении Грега Хьюгилла, разумно убедиться, что будущие коммиттеры используют редактор, который правильно обрабатывает новую политику окончания строки.

Когда вы говорите: «Добавление autocrlf = true, кажется, немного исправляет ситуацию». Я предполагаю, что это было сделано с использованием .gitattributes.

5 голосов
/ 06 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...