Различать дерево транзакций по другому пути / ревизии

Как в сценарии предварительной фиксации я могу получить различие зафиксированных изменений от произвольного пути / ревизии в том же хранилище?

Например, когда изменения в файлах внутри /trunk совершить, я хотел бы получить различий в совершенных /trunk (еще не ревизия) против, скажем, /branches/feature_x (который является филиалом /trunk).

Насколько я могу сказать, svnlook diff показывает только изменения, предложенные этой транзакцией, а svn diff работает только с ревизиями, а не с транзакциями.

Подход методом грубой силы был бы, чтобы дифференцировать вывод svnlook cat ... " а также " svn cat PATH:REV "для каждого файла, который был изменен. Однако, это кажется довольно неэффективным и не то, что я хотел бы иметь в сценарии ловушки.

Фон:

Я пытаюсь создать сценарий предварительной фиксации, который отклоняет все фиксации в определенных каталогах и позволяет вносить изменения только через реинтеграции веток (связанная статья: Обнаружение реинтеграции веток или слияния в скрипте предварительной фиксации).

Пока что представляется возможным обнаружить использование svn merge осматривая svn:mergeinfo свойства базового каталога. Однако невозможно провести различие между изменениями файлов, примененными слиянием, и изменениями, выполненными вручную, и поэтому изменения после слияния останутся незамеченными.

Я хотел бы иметь возможность сравнить дерево подтвержденных транзакций с источником слияния, чтобы убедиться, что никаких дополнительных изменений не было сделано. (В соответствии с нашей политикой проекта все конфликты разрешаются в ветви функций до реинтеграции, поэтому никаких изменений не требуется после merge --reintegrate в /trunk).

1 ответ

diff выводит "svnlook cat ..." и "svn cat PATH: REV"

OS-diff может принимать только один ФАЙЛ из стандартного ввода, вы не можете заменить оба

Грязная идея, а не решение

  • Вы можете попробовать предварительно зафиксировать файлы коммита в транзакции в дополнительном (не связанном с основным) репозитории и diff-файлы во втором хуке post-commit репозитория, которые возвращают необходимый результат в вызов ловушки pre-commit в репо (есть pre-made локальное репо и WC для этого репо, сохранение файлов в транзакции в WC, добавление / при необходимости /, фиксация)
Другие вопросы по тегам