В рамках pre-commit script, возможно ли (и если да, как) идентифицировать фиксации, вытекающие из svn merge
?
svnlook changed ...
показывает файлы, которые были изменены, но не различают между слияниями и ручными изменениями.
В идеале я хотел бы также различать стандартные merge
и a merge --reintegrate
.
Справочная информация:
Я изучаю возможность использования привязок pre-commit для обеспечения соблюдения политик использования SVN для нашего проекта.
В одном из политик указано, что некоторые каталоги (например, /trunk
) не должны быть изменены напрямую и изменены только путем реинтеграции ветвей функций. Поэтому pre-commit script отклоняет все изменения, внесенные в эти каталоги, помимо реинтеграции ветвей.
Любые идеи?
Обновление:
Я изучил команду svnlook
, а ближайший я обнаружил и проанализировал изменения в свойстве svn:mergeinfo
каталога. Этот подход имеет некоторый недостаток:
-
svnlook
может отмечать изменение свойств, но не какое свойство было изменено. (требуется различие сproplist
предыдущей ревизии) - Проверяя изменения в
svn:mergeinfo
, можно обнаружить, что был запущенsvn merge
. Однако нет способа определить, являются ли коммиты чисто результатом слияния. Изменения, сделанные вручную после слияния, будут незамеченными. (связанная почта: Diff дерево транзакций по другому пути/ревизии)