Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Контроль версий для файлов MS Office, Libre Office и других XML-based

#git #git_config


Хочу хранить в репозитории Git файлы из офисных пакетов вроде MS Office или Libre Office.


Возможны ли какие-то проблемы?
Как правильно организовать хранение? 
Можно ли производить слияние (merge) этих файлов средствами Git? 

    


Ответы

Ответ 1



Возможны ли какие-то проблемы? Есть ряд форматов данных, которые внутри себя устроены как папки/архивы, содержащие текст (xml) и бинарные данные. Список XML-based форматов просто огромен, приведу одни из самых популярных: OpenDocument: .odt, .ods, .odp и прочие. OpenOffice.org XML: .sxw, .sxc, .sxi и прочие. Open Packaging Conventions .docx, .xlsx, .pptx и прочие. Git может распознавать такие файлы как текст. Тогда он Начнет приводить к общему виду окончания строк, При слиянии ветвей соберет один документ из двух, рассчитывая на дальнейшую ручную правку. То и другое испортит файл почти необратимым образом. Из документации Git: gitattributes, "Marking files as binary". Git usually guesses correctly whether a blob contains text or binary data by examining the beginning of the contents. However, sometimes you may want to override its decision, either because a blob contains binary data later in the file, or because the content, while technically composed of text characters, is opaque to a human reader. Как правильно организовать хранение? В корневой директории проекта нужно создать файл .gitattributes (или отредактировать, если уже есть). В него добавить следущую строку — для каждого расширения файлов, которое там будет храниться: *.<расширение> binary Пример: *.docx binary *.xlsx binary *.odt binary Таким образом вы явно отмечаете, что файлы с данным расширением необходимо обрабатывать как бинарные. В бинарном файле Git никогда не будет заменять окончания строк (т.к. для него это теперь не CR и LF, а просто байты). Можно ли производить слияние (merge) этих файлов средствами Git? Если .gitattributes настроен правильно, то можно производить слияние веток, содержащих такие файлы. При слиянии документ не будет испорчен, но и объединить содержимое двух файлов в один автоматически не получится. Однако, PashaPash подсказывает, что в MS Office есть специальный инструмент для слияния файлов. После того, как вы вручную собрали из двух документов один (или выбрали одну из версий), нужно проиндексировать изменения и подтвердить их коммитом, чтобы завершить слияние.

Комментариев нет:

Отправить комментарий