好吧,我在这里看不到你的麻烦点
- 带有事务(和本地仓库)的预提交挂钩中的任何(几乎所有)操作都可以使用
svnlook
- svnlook 有子命令 propget,可以在事务级别上操作并从 repo 内的任何路径中提取任何属性(在本例中为事务),您必须已经知道,在那里您可以遇到 repo-tree 中的外部
- 您可以从 repo 中的任何先前版本中识别正确的|需要的外部格式
编辑
好的,我明白了:这里需要额外的细节。对于测试和实验,我在 Assembla 上使用了开放存储库 Proving Ground 用于外部组件,它在标签中具有 PEG-ed 修订版,而在主干中没有 PEG-ed。为了在本地使用 svnlook,我只是将它 svnrdump'ed 到本地存储库中。
- 从事务中获取属性最接近的等价物是从提交的修订中获取它。
标签 1.0.1 是用 r7 创建的
>svnlook pg rep svn:externals tags/1.0.1/ -r 7
-r 2 https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib@2 lib
在哪里:
rep
是本地文件系统上存储库的相对路径
tags/1.0.1/
是存储库内的路径,我以前知道,它应该有定义
-r 7
是修订,我想测试
标签是从主干创建的,其中外部未绑定到特定修订
>svnlook pg rep svn:externals trunk/ -r 6
https://subversion.assembla.com/svn/subversion-trouble-shooting/trunk/lib lib
您现在必须看到规格上的差异
警告:在使用古老的(1.4 之前)SVN 客户端的情况下,外部定义的格式会有所不同,并且在使用 SVN 的 CLI 版本或来自 IDE 的 SVN 集成的情况下可能会略有不同(无法回忆确切的细节) (上面我用 TortoiseSVN 创建的定义),但这将是你工作的一部分
- 我命令仅在需要时应用钩子的业务逻辑(仅用于 /tags 中的提交)并更快地完成提交,您还检查了钩子(在早期阶段)附加条件 - 此提交标记是否相关。又是 svnlook 和
dirs-changed
subcommand
dirs-changed
提交到标签
>svnlook dirs-changed rep -r 7
tags/
tags/1.0.1/
dirs-changed
提交到其他位置
>svnlook dirs-changed rep -r 6
trunk/
你可以 |grep tags
在好的操作系统中,在Windows中做一些技巧,根据结果进行操作
PS:不要忘记在生产中替换-r
为-t
并存储 transaction-id+repo-path,您将获得作为 hook 的参数