2

在预提交脚本中,如何获取已提交更改与同一存储库中任意路径/修订版的差异?

例如,当提交对其中文件的更改时/trunk,我想获得提交的/trunk(还不是修订版)与例如/branches/feature_x(它的一个分支/trunk)的差异。

据我所知,svnlook diff仅显示该事务提出的更改,而svn diff仅适用于修订而不适用于事务。

一种蛮力的方法是为每个被修改的文件区分“ svnlook cat ...”和“ ”的输出。svn cat PATH:REV然而,这似乎相当低效,而不是我想在钩子脚本中拥有的东西。

背景:

我正在尝试创建一个预提交脚本,该脚本拒绝对某些目录的所有提交,并仅允许通过分支重新集成进行更改(相关帖子:检测分支重新集成或在预提交脚本中合并)。

到目前为止,似乎可以svn merge通过检查svn:mergeinfo基目录的属性来检测 的使用。但是,无法区分合并应用的文件修改和手动修改的文件,因此不会检测到合并后的编辑。

我希望能够将提交的事务树与合并的源进行比较,以确保没有进行额外的更改。merge --reintegrate(根据我们的项目政策,所有冲突解决都在重新集成之前在功能分支中完成,因此在into之后不需要更改/trunk)。

4

1 回答 1

0

区分“svnlook cat ...”和“svn cat PATH:REV”的输出

OS-diff 只能接受来自标准输入的一个文件,不能同时替换两者

肮脏的想法,而不是解决方案

  • 您可以尝试将事务中的 pre-commit 钩子提交文件放入附加(与主无关)存储库和第二个存储库的 post-commit 钩子中的差异文件,这会将所需的结果返回到在 repo 一中调用 pre-commit 钩子(已预先制作此 repo 的本地 repo 和 WC,将事务中的文件保存到 WC,添加/如果需要/,提交)
于 2013-02-01T21:49:43.030 回答