在预提交脚本中,如何获取已提交更改与同一存储库中任意路径/修订版的差异?
例如,当提交对其中文件的更改时/trunk
,我想获得提交的/trunk
(还不是修订版)与例如/branches/feature_x
(它的一个分支/trunk
)的差异。
据我所知,svnlook diff
仅显示该事务提出的更改,而svn diff
仅适用于修订而不适用于事务。
一种蛮力的方法是为每个被修改的文件区分“ svnlook cat ...
”和“ ”的输出。svn cat PATH:REV
然而,这似乎相当低效,而不是我想在钩子脚本中拥有的东西。
背景:
我正在尝试创建一个预提交脚本,该脚本拒绝对某些目录的所有提交,并仅允许通过分支重新集成进行更改(相关帖子:检测分支重新集成或在预提交脚本中合并)。
到目前为止,似乎可以svn merge
通过检查svn:mergeinfo
基目录的属性来检测 的使用。但是,无法区分合并应用的文件修改和手动修改的文件,因此不会检测到合并后的编辑。
我希望能够将提交的事务树与合并的源进行比较,以确保没有进行额外的更改。merge --reintegrate
(根据我们的项目政策,所有冲突解决都在重新集成之前在功能分支中完成,因此在into之后不需要更改/trunk
)。