2011-06-02 91 views
3

我有一个目录在我的Subversion存储库中,我想用外部存储库的内容替换。所以在我的仓库中,路径是/ toplevel/sites/foo。我想从外部存储库中取出foo。我可以通过在svn:externals on/toplevel/sites中添加“foo http://other-repository.com/path/to/foo”来实现。但是,这使得无法直接签出/顶层/站点/ foo。你必须检查/顶层/网站,让foo被递归拉。在/顶层/站点有东西,所以这是不理想的,我们经常有工作人员只在一个/顶层/站点上工作。svn:外部替换子目录

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

我该如何设置,以便您可以只拉/顶级/网站/ foo,而不是其他任何东西?

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

回答

0

呃,实际上刚刚检出http://other-repository.com/path/to/foo某处?我不知道其他方式。如果您在适当的地方需要它,您当然可以将它移动到目录中,该目录先前用svn co --depth=empty签出。

+0

我猜我没说清楚。我想要“svn co http://myrepository.com/toplevel/sites/foo”通过拉入http://other-repository.com/path/to/foo来工作。它没有。它说没有这样的URL http://myrepository.com/toplevel/sites/foo – jsd 2011-06-02 18:20:17

+0

我知道你想要什么,但这不能以另一种方式/直接完成。外部不是别名或类似的东西,并且处理客户端,而不是服务器端。也许有人制作了自定义的服务器端代码,但我对此表示怀疑。至于svn-server知道,你的'foo'目录不存在,只有客户端读取目录的道具并发现一个外部。 – Wrikken 2011-06-02 18:22:26

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在检出原始工作副本后,还会自动检查外部工作副本。