Можно ли в сценарии предварительной фиксации (и если да, то как) идентифицировать фиксации, происходящие из svn merge
?
svnlook changed ...
показывает файлы, которые были изменены, но не делает различий между слиянием и ручным редактированием.
В идеале я также хотел бы различать стандартный merge
и merge --reintegrate
.
Задний план:
Я изучаю возможность использования хуков предварительной фиксации для обеспечения соблюдения политик использования SVN в нашем проекте.
Одна из политик гласит, что некоторые каталоги (например, /trunk
) не следует изменять напрямую, а изменять только путем реинтеграции ветвей функций. Таким образом, сценарий предварительной фиксации отклоняет все изменения, внесенные в эти каталоги, за исключением повторной интеграции веток.
Любые идеи?
Обновлять:
Я изучил команду svnlook
, и самое близкое, что у меня есть, - это обнаружение и анализ изменений свойства svn:mergeinfo
каталога. У этого подхода есть недостаток:
svnlook
может отметить изменение свойств, но не то, какое свойство было изменено. (требуется разница сproplist
предыдущей ревизии)- Просматривая изменения в
svn:mergeinfo
, можно обнаружить, чтоsvn merge
был запущен. Однако невозможно определить, являются ли коммиты исключительно результатом слияния. Изменения, внесенные вручную после слияния, останутся незамеченными. (связанное сообщение: Различие дерева транзакций с другим путем / ревизией)
svn:mergeinfo
хрупок: это свойство является механизмом, используемым Subversion для отслеживания изменений. Однако я не уверен, что опция--reintegration
имеет какое-либо прямое влияние на свойства ревизии. Извините, я ничем не могу больше помочь. - person Álvaro González   schedule 09.01.2012svn:mergeinfo
недостаточно. См. обновления выше. - person Shawn Chin   schedule 11.01.2012