Версионирование данных с помощью git: пользовательский diff для определенных файлов

Итак, я хочу исследовать применимость git для отслеживания версий некоторых бинарных или текстовых древовидных структур данных. Дело в том, что я хочу, чтобы логика diff была полностью индивидуальной, адаптированной к шаблону структуры данных.

Предположим, что файл, о котором идет речь, является некоторым объектом json, я хочу иметь пользовательский diff для json-файлов. Итак, если у меня есть версия A, как эта:

{ a: 'yes' , b: { 'X': 'unavailable' , 'Y': ready } }

и я применяю следующее изменение:

{ a: 'yes' , b: { 'X': 'unavailable' , 'Y': done } }

то мой diff будет умным, чтобы определить, что изменился только элемент 1. При использовании стандартного diff, если кто-то другой внесет изменение, скажем, в ключ a, элемент [0], то это приведет к возникнет конфликт, который нужно будет объединить вручную. Пользовательский diff будет нацелен на то, чтобы настроить логику diff для определенных типов файлов и их содержимого.

Для двоичных файлов также может быть применено нечто несколько иное.

Цель этого вопроса - узнать, есть ли:

  • способы в текущем git для поддержки этой настройки
  • проекты или ветки разработки git для поддержки этой настройки
  • какой-то другой инструмент, лучше нацеленный на это

спасибо!

Редактировать Я нашел эту статью, которая, как мне кажется, дает очень широкое представление о том, что меня интересует. Также это, вероятно, признак того, что на самом деле пока нет хорошего решения для этой проблемы.

8
задан lurscher 6 February 2012 в 00:35
поделиться