Как получить полезный git diff файлов, сохраненных в Libre Office Writer, с выводом в командной строке? - PullRequest
0 голосов
/ 18 октября 2018

Версия по умолчанию git diff для файлов .odt по умолчанию не показывает, что было изменено

Двоичные файлы i / filename.odt и w / filename.odt отличаются

Есть ли способ показать, что действительно было изменено, и сохранить файл для редактирования в Libre Office?

Ответы [ 4 ]

0 голосов
/ 19 октября 2018

Вы также можете использовать формат плоского xml, предложенный Libreoffice.

Формат файла .fodt.См. Libreoffice и управление версиями или этот ответ , который предоставляет хорошие ссылки.

По ссылке:

Если документ сохранен какФайл .fodt содержит те же данные, что и файл .odt.Только то, что на этот раз данные представлены в виде удобочитаемого текста (что значительно облегчает работу системы контроля версий) и не сжимаются.Таким образом, сохранение документа в виде простого XML позволяет сохранить требования к серверному пространству и нагрузку на сеть на низком уровне при относительно низкой стоимости тратить несколько килобайт на локальных жестких дисках.

0 голосов
/ 18 октября 2018

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


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

Вот несколько примеровинструменты, которые можно использовать:

  • catdoc (для Word)
  • catppt (для Powerpoint)
  • odt2txt (для Writer)
  • xls2csv (для Excel)

Сначала тип файла каждого офисного файла можно настроить глобально в файле $HOME/.config/git/attributes:

*.doc binary diff=doc
*.odt binary diff=odt
*.ppt binary diff=ppt
*.xls binary diff=xls

Затем, чтобыГлобально настроить драйвер diff для каждого из этих типов файлов :

git config --global diff.doc.textconv catdoc
git config --global diff.odt.textconv odt2txt
git config --global diff.ppt.textconv catppt
git config --global diff.xls.textconv xls2csv

Источник: https://medium.com/@mbrehin/git-advanced-diff-odt-pdf-doc-xls-ppt-25afbf4f1105

0 голосов
/ 18 октября 2018

Для базовых целей, чтобы отразить текст в любом формате zipped-xml, вы можете использовать xmllint, чтобы отформатировать xml и отразить их, скажем, вы сделали

git show master:summary.odt >${file1=`mktemp`}
git show feature:summary.odt >${file2=`mktemp`}
7z x -o ${extract1=`mktemp -d`} $file1
7z x -o ${extract2=`mktemp -d`} $file2
find $extract1 $extract2 -iname \*.xml -execdir xmllint --format {} -o {}.pretty \;

, и теперь вы можете diff.pretty, чтобы увидеть, что изменилось.Соберите это с обычными лесами, и вы получите базовый драйвер различий.Вы даже можете заменить xml на предварительно подтвержденный xml, отредактировать его, перепаковать, все это работает.

0 голосов
/ 18 октября 2018

Не храните файлы odt в git.Вы можете unzip их и хранить содержимое вместо XML.Возможно, вам понадобится добавить новые строки в файлы XML, как они есть, IIRC, только строки XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...