【问题标题】:svn-externals with own svn-externals: how to recursively checkout?带有自己的svn-externals的svn-externals:如何递归结帐?
【发布时间】:2011-04-14 19:09:30
【问题描述】:

所以我使用 svn:externals 来签出一个外部 repo。外部仓库有自己的 svn-externals 设置。

现在,当更新我的项目的工作副本时,来自外部 repo 的文件正在更新,但它的外部文件没有。这种行为是否符合设计,是否可以扩展以更新外部依赖项?

【问题讨论】:

    标签: svn


    【解决方案1】:

    从 Subversion1.5 开始支持递归检出,如 thread illustrates

    "Version Control with Subversion" book 确实提到了 svn checkoutsvn updatesvn switchsvn export 命令能够在外部存储库中递归,但是:

    • 如果为特定修订设置了外部,即使外部存储库有新修订,任何“update”都不会更改其中的任何文件。
    • 必须始终从父存储库启动更新,而不是直接从子存储库启动:

    但请注意,不要以导致问题的微妙方式无意中修改外部工作副本。
    例如,虽然外部定义可能指定外部工作副本应保存在特定修订号,但如果您直接在外部工作副本上运行svn update,Subversion 将强制执行,现在您的外部工作副本是与主要工作副本中的声明不同步

    所以也许这两种情况之一适用于此。


    OP Carsten 报告:

    它现在实际上正在工作。

    我已经在外部项目的根节点上设置了 externals 属性(比如说项目'lib')。
    在我的具体项目(项目'A')中,外部是在'lib'(即myLocalFolder > lib/someFolder)的子文件夹中定义的。
    这似乎是颠覆没有递归到lib 的外部的原因;只查看了“someFolder”内部,没有在那里找到外部定义,所以它没有检出someFolder/externalLib
    现在,在“lib”中,我更改了外部定义,以便在“A”中引用的文件夹中定义它们;现在就像一个魅力!

    【讨论】:

    • 感谢您提供详尽的信息!
    • 它现在实际上正在工作。供参考。我已经在外部项目的根节点上设置了 externals 道具(比如说项目'lib')。在我的具体项目(项目“A”)中,外部是在“lib”的子文件夹中定义的(即 myLocalFolder > lib/someFolder)。这似乎是颠覆没有递归到 lib 外部的原因;只查看了“someFolder”内部,没有找到外部定义,所以没有检查 someFolder/externalLib。现在,在“lib”中,我更改了外部定义,以便在我在“A”中引用的文件夹中定义它们;现在就像一个魅力!
    • @Carsten:非常好:) 我在答案中添加了你的结论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多