Плагин слияния Subversion / пост-регистрация / предварительная проверка - PullRequest
0 голосов
/ 30 декабря 2010

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

Поскольку в настоящее время эти файлы отмечены как есть, они обрабатываются как двоичные файлы со всеми очевидными ограничениями

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

Для регистрации : автоматически разбивать файлы:

  • Эти файлы имеют уникальное расширение, поэтому для каждого файла, зарегистрированного с таким расширением
  • распаковать этот файл в память / временную папку
  • Для каждого из этих файлов (XML) нормализовать их (для сравнения / слияния)
    • Переупорядочить прямые дочерние узлы корня в предварительно определенном порядке (например, в алфавитном порядке)
    • Некоторые элементы имеют локальные идентификаторы ссылок, переписывайте идентификаторы последовательно после сортировки
  • создать папку в SVN с тем же именем, что и исходный заархивированный файл
  • проверьте файлы в zip-архиве в этой папке

Для выписок : автоматическая перепаковка файлов:

  • Менее важно - можно сделать с помощью Maven / Ant
  • При извлечении взорванной папки (или любого из ее файлов содержимого)
  • Вместо проверки этой папки / файлов:
  • Заархивировать все файлы в этой папке
  • И посмотрите заархивированный файл

Для слияний

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

Возможно ли что-либо из вышеперечисленного? если так то как? Есть ли более одного пути?

1 Ответ

0 голосов
/ 04 января 2011

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

Другой способ - это то, что вы описали.Но сложность состоит в том, чтобы иметь триггер, чтобы сделать это для всех файлов zip.Вы можете использовать другой фильтр в триггере, чтобы сделать это только для файлов из определенных папок, и вам придется хранить этот набор папок в отдельной БД.Чтобы избежать этих сложностей, напишите обертку вокруг приложения.

...