在预提交脚本中,如何针对同一存储库中的任意路径/修订获取已提交更改的差异?
例如,当提交对/trunk
内的文件的更改时,我希望得到提交的/trunk
(尚未修订)的差异,例如/branches/feature_x
(这是/trunk
)的一个分支。
据我所知,svnlook diff
仅显示该交易提出的更改,而svn diff
仅适用于修订而非交易。
蛮力方式方法是为每个被修改的文件区分“svnlook cat ...
”和“svn cat PATH:REV
”的输出。但是,这似乎效率很低,而不是我想在钩子脚本中使用的东西。
我正在尝试创建一个预提交脚本,该脚本拒绝所有对某些目录的提交,并且只允许通过分支重新集成进行更改(相关帖子:Detecting branch reintegration or merge in pre-commit script)。
到目前为止,似乎可以通过检查基目录的svn merge
属性来检测svn:mergeinfo
的使用。但是,无法区分合并应用的文件修改和手动修改的文件修改,因此合并后的编辑将不会被检测到。
我希望能够将提交的事务树与合并源进行比较,以确保不会进行额外的更改。 (根据我们的项目政策,所有冲突解决都在重新整合之前在功能分支中完成,因此在merge --reintegrate
进入/trunk
后不需要进行任何更改。
答案 0 :(得分:0)
区分“svnlook cat ...”和“svn cat PATH:REV”的输出
OS-diff只能从stdin接受一个FILE,你不能同时替换
肮脏的想法,而不是解决方案