Различать дерево транзакций по другому пути / ревизии - PullRequest
2 голосов
/ 10 января 2012

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

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

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

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

Справочная информация:

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

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

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

1 Ответ

0 голосов
/ 02 февраля 2013

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

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

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

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