Объединение изменений в файлах Draw.io (diagrams.net) с помощью Git

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

Проблема: теперь, когда объем документации увеличился, у нас иногда бывает несколько разработчиков, изменяющих одну и ту же диаграмму Draw.io в разных запросах на извлечение. XML-формат Draw.io не очень хорош для слияния ... поэтому нам пришлось использовать мягкую блокировку диаграмм (со старым добрым сообщением и файлами .OWNERS), чтобы избежать 2 PR для одновременного изменения диаграммы.

Я не нашел ни одной ссылки на плагин слияния. Последние версии настольного приложения и веб-редактора Draw.io позволяют совместное редактирование, но я не нашел способа начать с этого, чтобы написать инструмент слияния. Есть идеи, как действовать? У вас есть рекомендации, как лучше всего решить эту проблему?


person vgr    schedule 18.02.2021    source источник
comment
Предлагает ли draw.io что-то вроде mergetool / difftool?   -  person dan1st    schedule 18.02.2021
comment
Вы можете создать свой собственный механизм блокировки, чтобы предотвратить одновременный доступ.   -  person dan1st    schedule 18.02.2021


Ответы (1)


Согласно Формат XML-файла Draw.io?, тип файла .drawio может содержать данные в формате необработанного XML или сжатого XML.

Это также подтверждается официальными документами:

Формат по умолчанию для сохранения диаграмм был изменен некоторое время назад с необработанного XML на XML, сжатый с использованием стандартного deflate. Основная причина этого заключалась в том, что когда сервер Google испытывает затруднения, у сжатого файла гораздо больше шансов на запись. Тем не менее, необработанный XML может быть полезен, чтобы увидеть, как построена диаграмма.

https://drawio-app.com/extracting-the-xml-from-mxfiles/

У вас должна быть возможность отключить сжатие XML, установив <mxfile compressed="false" ...>.

Итак, подход может быть таким:

  • Работайте только с несжатыми .drawio xml-файлами.
  • Управление исходным кодом / сравнение / объединение этих файлов в виде удобочитаемого текста.
  • Добавьте процесс преобразования svn / png при создании статического сайта документации.

(Я протестировал только часть этого, дайте мне знать, работает ли это.)

person Martin Thøgersen    schedule 22.04.2021