Контроль версий с помощью XML diff и merge - PullRequest
10 голосов
/ 05 августа 2010

Я ищу инструмент контроля версий с открытым исходным кодом, который может различать и объединять XML-файлы.

Сложность, с которой я сталкиваюсь, чтобы найти такой инструмент, заключается в том, что мне нужно правильное слияние файла XML, сравнивающее узлы, а не линии.

Есть идеи? Спасибо!

Ответы [ 6 ]

6 голосов
/ 06 августа 2010

К сожалению, не существует универсального решения этой проблемы.Различия в XML очень чувствительны к тому, что вы считаете другим.В одном случае порядок дочерних узлов может быть важным, а в другом случае (может быть, даже в том же файле) он может быть неактуальным.

Взгляните на XMLUnit .Несмотря на то, что он нацелен на модульное тестирование, он представляет собой полный механизм XML-различий.Вы должны указать (в коде), как определить, что два узла имеют право на сравнение, и что делать со всеми найденными потенциальными различиями (т. Е. Являются ли они реальными или нет в вашем приложении).Он обнаруживает исчерпывающий список «разностных событий», включая

  • Порядок атрибутов
  • Количество атрибутов
  • Порядок дочерних узлов
  • количество дочерних узлов
  • неявные и явные значения атрибутов
  • различия в комментариях
  • различия в типе документа
  • различия в пространстве имен

И еще множество других.Любое из них может быть важным или неважным для вашего приложения, и только вы можете решить.Стоит посмотреть, но чтобы получить то, что вы хотите, потребуется определенная работа.

2 голосов
/ 27 августа 2010

Проект: объединение было разработано для решения именно этой проблемы: сравнение и объединение XML-файлов с помощью программного обеспечения SCM.

Боюсь, что это тоже не бесплатно, но значительно дешевле, чем другиеинструменты, которые утверждают, что могут сравнивать и объединять XML.

2 голосов
/ 05 августа 2010

В прошлом я использовал diffxml . Возможно, вы сможете использовать это в качестве команды diff для VCS, например svn или git.

1 голос
/ 06 августа 2010

Вы ищете diff-инструмент, который является лишь подмножеством VCS.Все VCS могут использовать внешнюю программу для сравнения файлов.Поскольку внешний diff-инструмент может быть чем угодно, он также может быть написан вами и предназначен для анализа и сравнения двух XML-документов.

Я не знаю, облегчает ли это вамнайти то, что вы ищете, но это может.

0 голосов
/ 06 августа 2010

Это должен быть простой инструмент «все в одном» для фиктивных / ленивых пользователей.API или консольные программы не подходят.Похоже, что его нет в мире открытого кода.

Clearcase может это сделать, но это дорого. Кислород может сливаться, но это также не бесплатно.

0 голосов
/ 06 августа 2010

Как уже отмечали другие, вам нужен хороший инструмент сравнения, а не vcs.

К сожалению, я не слышал ни о каком графическом инструменте сравнения, поддерживающем xml.Поэтому я бы использовал обычный инструмент сравнения, такой как (winmerge или k3diff), а затем я бы проверил xml, полученный в результате слияния, с помощью любого инструмента проверки XML, который вам нравится.

...