2016-03-24 1 views
6

Каждый раз, когда мы вносим изменения в файлы .strings (для локализации iOS) из разных ветвей, у нас будут конфликты.Как сделать git рассматривать файлы .strings как текстовый файл вместо двоичного файла

Причина заключается в том, что git рассматривает .strings как двоичные файлы вместо текстовых файлов. Иногда это немного раздражает, потому что git не поможет слиянию изменений автоматически, опять же, потому что они рассматриваются как в двоичном формате.

Есть ли какие-либо настройки Git, которые заставят его рассматривать файл как текстовый файл.

Я заметил, что оба SourceTree и GitLab не сможет сказать, что это текстовый файл. Но сам XCode сможет показать нам diff. Не уверен, что это связано или нет.

enter image description here

ответ

11

Создать .gitattributes файл в корневом каталоге вашего репо с этим содержимым:

*.strings diff 

Дополнительная информация: https://git-scm.com/docs/gitattributes

+1

@ Славомир-jaranowski предлагает 'Text' в то время как вы предлагаете' diff'; в чем разница? – Sukima

+0

Использование 'diff' будет вызывать файлы этого типа будут сравнить при помощи используемой по умолчанию difftool –

1

Пожалуйста, добавьте в вашем проекте корневой директории файл .gitattributes с содержанием:

*.strings text 

Теперь git распознает ваши файлы .strings в виде текстовых файлов.

+1

@ Джонатан-грани предлагает' diff' в то время как вы предлагаете 'Text'; в чем разница? – Sukima

+0

Из справочника: Установка текстового атрибута в пути обеспечивает нормализацию конца строки и отмечает путь как текстовый файл. Окончательное преобразование происходит без угадывания типа содержимого. –

+1

И: путь, к которому установлен атрибут diff, обрабатывается как текст, даже если они содержат значения байтов, которые обычно не отображаются в текстовых файлах, таких как NUL. –

5

После попытки Джонатана или решения Славомира, я все еще не в состоянии увидеть диф правильно. Они все еще считаются двоичным файлом.

Наконец-то выяснилось, что наш файл localizable.strings не в кодировке UTF-8, а в кодировке UTF-16. После изменения кодировки обратно в UTF-8, он отлично работает.

Можно ли изменить кодировку? Да. На самом деле Apple рекомендует использовать UTF-8.

Примечание. Рекомендуется сохранять файлы строк с использованием кодировки UTF-8, которая является стандартной кодировкой для стандартных файлов строк. Xcode автоматически перекодирует файлы строк из UTF-8 в UTF-16, когда они копируются в продукт.

[reference]

Как вы знаете, какую кодировку этот файл? См this для командной строки и this для Xcode:

file -I vol34.tex