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

检测SVN中共享源的不一致修订,svn,Svn,我有一个SVN存储库,其中包含几个组件: 图书馆 图书馆B-取决于图书馆A 应用-取决于LibraryB和LibraryA 更详细的结构(分支和标记与问题无关): 图书馆 图书馆代码 图书馆B 图书馆B_代码 svn:图书馆代码固定版本R1的外部 应用 应用程序代码 svn:图书馆代码固定版本R2的外部 svn:图书馆B_代码固定版本R3的外部 我试图解决的问题是,当R2与R1不同时,自动检测情况(打破对LibraryB_代码的期望),并通知相关情况(例如,构建失败) 我将在

我有一个SVN存储库,其中包含几个组件:

  • 图书馆
  • 图书馆B-取决于图书馆A
  • 应用-取决于LibraryB和LibraryA
更详细的结构(分支和标记与问题无关):

  • 图书馆
    • 图书馆代码
  • 图书馆B
    • 图书馆B_代码
    • svn:图书馆代码固定版本R1的外部
  • 应用
    • 应用程序代码
    • svn:图书馆代码固定版本R2的外部
    • svn:图书馆B_代码固定版本R3的外部
我试图解决的问题是,当R2与R1不同时,自动检测情况(打破对LibraryB_代码的期望),并通知相关情况(例如,构建失败)

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


环境:Windows、Visual Studio、SVN。

为每个库存储一个文件,其中包含每个依赖项所需的修订版。添加生成后事件,该事件将这些修订与“svnversion”的结果进行比较,并在任何检查失败时中断生成

缺点:

  • 需要安装命令行svn客户端(而开发人员可能只喜欢使用OrtoiseSVN)
  • 不适用于导出的源,仅适用于签出的工作副本

  • 为每个库存储一个文件,其中包含每个依赖项所需的修订。添加一个生成后事件,将这些修订与“svnversion”的结果进行比较,并在任何检查失败时中断生成

    缺点:

  • 需要安装命令行svn客户端(而开发人员可能只喜欢使用OrtoiseSVN)
  • 不适用于导出的源,仅适用于签出的工作副本

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


    这种情况可以在应用程序存储库的a中处理。该钩子将库B的指定版本签出到临时目录,并将其所需的库a版本与应用程序所需的版本进行比较。有关可用钩子的列表,请参阅。

    当您修改
    svn:externals
    属性时并提交此更改后,您将创建库B的新修订版。这意味着,应用程序存储库仍然保持一致。您 只需要在修改应用程序本身的
    svn:externals
    属性时才需要担心

    这种情况可以在应用程序存储库的a中处理。该钩子将库B的指定版本签出到临时目录,并将其所需的库a版本与应用程序所需的版本进行比较。有关可用钩子的列表,请参阅。

    Cool:)您听说过在其他项目中使用这种方法吗?如果有一些广泛的实现,最好使用它。AFAIK钩子不存储在存储库中,因此这部分逻辑将不会成为历史记录、备份等的一部分,并且在没有访问SVN服务器的情况下,无法被人查看,因此拥有尽可能少的cust将是一件好事酷:)你听说过在其他项目中使用这种方法吗?如果有一些广泛的实现,最好使用它。AFAIK钩子不存储在存储库中,因此这部分逻辑不会成为历史记录、备份等的一部分,并且在没有访问SVN服务器的情况下无法被查看,因此最好尽量减少自定义。