В скрипте перед фиксацией, как я могу получить разницу зафиксированных изменений с произвольным путем / ревизией в том же хранилище?
Например, когда фиксируются изменения в файлах в пределах /trunk
, я хотел бы получить разность зафиксированного /trunk
(еще не ревизия) против, скажем, /branches/feature_x
(который является ветвью /trunk
).
Насколько я могу судить, svnlook diff
показывает только изменения, предложенные этой транзакцией, тогда как svn diff
работает только с ревизиями, а не с транзакциями.
Подход с использованием грубой силы будет состоять в том, чтобы различать выходные данные "svnlook cat ...
" и "svn cat PATH:REV
" для каждого файла, который был изменен. Однако это кажется довольно неэффективным, и я бы не хотел, чтобы это было в скрипте ловушек.
Справочная информация:
Я пытаюсь создать сценарий предварительной фиксации, который отклоняет все фиксации в определенных каталогах и допускает изменения только через реинтеграции веток (связанный пост: Обнаружение реинтеграции или слияния ветвей в скрипте предварительной фиксации ).
Пока что возможно обнаружить использование svn merge
, проверив свойства svn:mergeinfo
базового каталога. Однако невозможно провести различие между изменениями файлов, примененными слиянием, и изменениями, выполненными вручную, и поэтому изменения после слияния останутся незамеченными.
Я хотел бы иметь возможность сравнить дерево подтвержденных транзакций с источником слияния, чтобы убедиться, что никаких дополнительных изменений не было сделано. (В соответствии с нашей политикой проекта все разрешения конфликтов выполняются в ветви функций до реинтеграции, поэтому никаких изменений не требуется после merge --reintegrate
в /trunk
).