2009-10-05 2 views
9

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

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

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

Любая помощь была бы высоко оценена как ее довольно беспорядок!

(Следующая stackoverflow post кажется, это может помочь, хотя оно не ответит, что происходит, когда у нас есть еще один макинтош или ПК или пользователей Linux совершить еще один патч)

ответ

5

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

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

А вот a link к подобным советам от Github.

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

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

+2

Итак, первый шаг: исправьте концы строк в репозитории. Шаг второй: попросите людей использовать 'git config -global core.autocrlf true', а затем пощекотать их, если они совершают, не используя его? – corydoras

+0

@corydoras: красота '.gitattributes' заключается в том, что файл может быть перенесен в репозиторий. Если 'core.autocrlf' задан в файле и нажат, то я считаю, что он должен обеспечивать окончание строк в любых клонов. Тем не менее, я не уверен, нужны ли новые клоны или если каждый коммиттер должен будет следовать рекомендациям, данным Github. –

5

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

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

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