Миграция проекта Windows PHP в Git и применение обновлений / исправлений OSX - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть PHP-проект на основе Windows (CRLF Newlines), который не контролировался версиями. Я недавно поместил этот проект в Git на моей машине с OSX. Другой разработчик внес изменения в источник (на отдельной машине), пока он не был в Git, и теперь мне нужно объединить эти изменения в репозиторий.

Мой первоначальный план состоял в том, чтобы использовать diff / patch для синхронизации всего. Проблема в том, что он сделал свои обновления для OSX, поэтому мне нужно преобразовать переводы строки, чтобы заставить работать diff / patch.

Есть ли способ заставить diff работать с новыми строками CRLF? Из того, что я прочитал, вы должны сначала выполнить преобразование в LF, прежде чем применять diff.

Если нет, нужно ли мне рекурсивно просматривать все файлы и выполнять преобразование новой строки?

Собираюсь ли я вообще обновить этот репо?

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

При создании патча вы должны быть в состоянии указать инструменту, который вы используете, чтобы игнорировать изменения EOL или пробелы.Кроме того, git apply и git am имеют некоторые опции, касающиеся того, как они обрабатывают пробелы, но я не использовал их, поэтому я не уверен, как они обрабатывают различия с дополнительными пробелами и изменениями EOL.это исправить все CRLF в вашем репо на LF, потому что git работает лучше всего, если в репо все использует окончания строк LF.При необходимости есть варианты изменить окончание строки на CRLF при оформлении заказа, при этом используя LF для внутреннего использования.

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

Сладкое!

Сначала мне нужно было избавиться от всех CRLF. Я убил весь мой репозиторий с помощью rm -rf .git/. Затем я свободно следил за GitHub Работа с окончаниями строк , который происходит из этого стека overflow Q & A .

# switch on the conversion of line endings on commit
$ git config --global core.autocrlf input

# Initialize
$ git init
$ git add .
$ git commit -m "First Import"

# If you're doing this on a Unix/Mac OSX clone then optionally remove
# the working tree and re-check everything out with the correct line endings.
$ git ls-files -z | xargs -0 rm
$ git checkout .

Затем я запустил diff и patch против соответствующих папок и запустил финальный commit. Все синхронизировано!

...