svn:externals替换子目录

时间:2011-06-02 17:49:37

标签: svn

我的subversion存储库中有一个目录,我想用外部存储库的内容替换它。所以在我的存储库中,路径是/ toplevel / sites / foo。我希望foo从外部存储库中提取。我能够通过向/ toplevel / sites上的svn:externals添加“foo http://other-repository.com/path/to/foo”来做到这一点。但是,这使得无法直接签出/ toplevel / sites / foo。你必须检查/ toplevel / sites并让foo以递归方式被拉出。 / toplevel / sites中有一些东西,所以这不是最理想的,我们经常让工作人员在/ toplevel / sites中只处理一件事。

我的第二次尝试是在toplevel / sites / foo中创建一个空目录,并直接将svn:externals属性添加到foo。这可以让你checkout / toplevel / sites / foo但它最终把外部东西INSIDE,所以产生的路径是/ toplevel / sites / foo / foo。我只想要一个人。

如何进行设置以便您可以仅使用/ toplevel / sites / foo而不进行任何其他操作?

编辑:我通过创建一个空的foo目录并将远程存储库中的所有顶级目录添加到foo的svn:externals来实现它。这有点难看但幸运的是没有那么多顶级实体。如果可能的话,我仍然希望找到一种方法让它无需这样做。

2 个答案:

答案 0 :(得分:0)

嗯,实际上只是在某处查看http://other-repository.com/path/to/foo?我别无知道。如果您需要在适当的位置,您当然可以将其移至先前使用sites签出的svn co --depth=empty目录中。

答案 1 :(得分:0)

你确实可以使用svn:externals来检查多个不同的目录甚至是不同的存储库。

来自svn书(http://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html);

Subversion支持外部定义。外部定义是本地目录到URL的映射,理想情况下是版本化目录的特定版本。在Subversion中,使用svn:externals属性在组中声明外部定义。您可以使用svn propset或svn propedit创建或修改此属性(请参阅“操作属性”一节)。它可以在任何版本化目录上设置,其值描述外部存储库位置和应该检出该位置的客户端目录。

svn:externals属性的便利之处在于,一旦将其设置在版本化目录中,每个使用该目录检出工作副本的人也可以获得外部定义的好处。换句话说,一旦一个人努力定义嵌套的工作副本结构,没有其他人需要打扰 - 在查看原始工作副本后,Subversion将自动检查外部工作副本。