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
рутина игнорировать эти несущественные изменения?