检测SVN中共享源的不一致修​​订

时间:2010-12-26 20:25:30

标签: svn

我有一个包含几个组件的SVN存储库:

  • LibraryA的
  • LibraryB - 依赖于LibraryA
  • 应用程序 - 取决于LibraryB和LibraryA

更详细的结构(分支和标签与问题无关):

  • LibraryA的
    • LibraryA_code
  • LibraryB
    • LibraryB_code
    • svn:外部到LibraryA_code的固定修订版R1
  • 应用
    • Application_code
    • svn:外部到LibraryA_code的固定修订版R2
    • svn:外部到LibraryB_code的固定修订版R3

我试图解决的问题是当R2与R1不同(打破了对LibraryB_code的期望)和通知(例如构建失败)时自动检测情况。

我将在答案中描述我现在看到的唯一解决方案,但我希望有更优雅的东西:)

环境:Windows,Visual Studio,SVN。

2 个答案:

答案 0 :(得分:1)

当您修改 Library B svn:externals属性并提交此更改时,您将创建 Library B 的新修订版。这意味着, Application 存储库仍然是一致的。您 修改 Application 本身的svn:externals属性时,只需要担心。

可以在 Application 存储库的repository hook中处理此案例。该钩子将 Library B 的指定版本检出到临时目录,并将其所需的 Library A 版本与应用程序所需版本的版本进行比较。有关可用挂钩的列表,请参阅Repository Hooks

答案 1 :(得分:0)

为每个库存储具有每个依赖项所需修订的文件。添加一个post-build事件,将这些修订与“svnversion”的结果进行比较,并在任何检查失败时中断构建。

缺点:

  1. 需要安装命令行svn客户端(而开发人员可能对TortoiseSVN单独感到满意
  2. 不适用于导出的源,仅适用于已签出的工作副本