Должен ли я объединить файлы.pbxproj с git, используя merge=union?

Мне интересно, имеет ли смысл опция merge = union в.gitattributes для файлов.pbxproj.

На странице man указывается эта опция:

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

Обычно это подходит для 90% случаев добавления файлов в проект. У кого-нибудь есть опыт с этим?

2 ответа

Решение

Не прямой опыт, но:

  • Этот ТАК вопрос действительно советов снова слияния .pbxproj файлы.

pbxproj файл на самом деле не человеческое слияние.
Хотя это простой текст ASCII, это форма JSON , По сути, вы хотите рассматривать его как двоичный файл.

(отсюда gitignore решение)

На самом деле, Peter Hosey добавляет в комментарии:

Это список свойств, а не JSON. Те же идеи, другой синтаксис.

Правда в том, что запретить слияние этого файла.pbxproj гораздо опаснее, чем полезно.
.pbxproj файл просто JSON (похоже на XML). Исходя из опыта, примерно ТОЛЬКО конфликт слияния, который вы когда-либо получали, - это если два человека добавили файлы одновременно. Решение в 99% случаев слияния заключается в сохранении обеих сторон слияния.

Так что объединение "союз" (с gitattributes Директива merge) имеет смысл, но проведите некоторый тест, чтобы увидеть, выполняет ли она то же самое, что и скрипт, упомянутый в последнем вопросе.

Я работал с большой командой в последнее время и пытался *.pbxproj merge=union, но в итоге пришлось его убрать.

Проблема заключалась в том, что скобки стали бы неуместными на регулярной основе, что делало файлы нечитаемыми. Это правда, что это работает большую часть времени - но может быть неудачно 1 из 4 раз.

Мы вернулись к использованию *.pbxproj -crlf -merge теперь. Похоже, это лучшее решение, которое работает для нас.

Другие вопросы по тегам