在预提交脚本中,是否有可能(如果有,如何)识别源自svn merge
?
svnlook changed ...
显示已更改的文件,但不区分合并和手动编辑。
理想情况下,我还想区分标准merge
和merge --reintegrate
.
背景:
我正在探索使用预提交挂钩来为我们的项目强制执行 SVN 使用策略的可能性。
其中一项政策规定,某些目录(如/trunk
)不应直接修改,只能通过重新集成功能分支进行更改。因此,预提交脚本将拒绝对这些目录所做的所有更改,除了分支重新集成。
有任何想法吗?
更新:
我已经探索了这个svnlook
命令,最接近的是检测和解析svn:mergeinfo
对目录属性的更改。这种方法有一些缺点:
svnlook
可以标记属性更改,但不能标记更改了哪个属性。proplist
(需要与先前版本的差异)- 通过检查 中的更改
svn:mergeinfo
,可以检测到svn merge
已运行。但是,无法确定提交是否纯粹是合并的结果。合并后手动进行的更改将不会被检测到。(相关文章:Diff transaction tree against another path/revision)