hg diff для файлов MySQL Workbench

яопубликовать это как Q & A задокументировать обходной путь для проблемы, которая часто возникает - как поставить файлы MySQL Workbench под контроль версий - но для которой я не смог найти никаких решений. Обратная связь приветствуется!

Как я могу сказать Mercurial, чтобыdiff содержимое архива zip и игнорировать некоторые изменения этого содержимого? В частности, как я могу использоватьhg разнести содержимое MySQL Workbench (.mwb) файл, игнорируя многие несущественные изменения, которые MySQL Workbench делает каждый раз, когда файл открывается? Могу ли я использовать собственный скрипт, который игнорирует некоторые несущественные изменения?

Фон

я пытаюсьdiff файл в репозитории hg. Файл,document.mwb.xmlявляется XML-документом, извлеченным из.mwb файл (файл модели MySQL Workbench). По сути, я стараюсь держать содержимое модели - структуру таблицы, визуальную модель и т. Д. - под контролем версий, но не фиксировать.mwb сам файл, который представляет собой zip-архив и, следовательно, двоичный файл.

В любое время я сохраняю.mwb файл, я распаковываю его. Я сохраняю разархивированное содержимое в своем хранилище и просто снова заархивирую его, когда мне нужно работать с.mwb в MySQL.

Рассматриваемый XML выглядит так:

<?xml version="1.0"?>
<data grt_format="2.0" document_type="MySQL Workbench Model" version="1.4.4">
  <value type="object" struct-name="workbench.Document" id="8551CCFA-3AD0-4207-BC76-15ED589CF22C" struct-checksum="0x7131bf99">
    <value type="object" struct-name="workbench.logical.Model" id="B48E1CD2-3386-40B7-8E59-AA191598F667" struct-checksum="0xf4220370" key="logicalModel">
      <value _ptr_="0x7fbcd1cc3270" type="list" content-type="object" content-struct-name="workbench.logical.Diagram" key="diagrams"/>
      <value _ptr_="0x7fbcd1cc3210" type="dict" key="customData"/>
      <value _ptr_="0x7fbcd1cc32d0" type="list" content-type="object" content-struct-name="model.Marker" key="markers"/>
      <value _ptr_="0x7fbcd1cc3330" type="dict" key="options"/>
      <value type="string" key="name"></value>
      <link type="object" struct-name="GrtObject" key="owner">8551CCFA-3AD0-4207-BC76-15ED589CF22C</link>
    </value>
    <value _ptr_="0x7fbcd1cc2b70" type="list" content-type="object" content-struct-name="workbench.OverviewPanel" key="overviewPanels"/>
    <value _ptr_="0x7fbcd1cc2c00" type="list" content-type="object" content-struct-name="workbench.physical.Model" key="physicalModels">
      <value type="object" struct-name="workbench.physical.Model" id="34B9E967-5C9B-4D1B-8759-C417F6C33AA3" struct-checksum="0x5f896d18">
...

Проблема в том,_ptr_ атрибуты: в этом файле их буквально тысячи, и каждый из них изменяется каждый раз, когда файл сохраняется, даже если ничего не изменяется. В результате, хранилище может быстро загромождаться совершенно бессмысленными «изменениями» в этом файле.

Есть ли способ использовать кастомdiff рутина игнорировать эти несущественные изменения?

Ответы на вопрос(1)

Ваш ответ на вопрос