无法在重定位中包含内部,尝试恢复

时间:2014-01-29 15:12:16

标签: svn tortoisesvn

当重新安置一些工作副本时,我显然没有点击其中几个的“包含外部”按钮,现在还不清楚如何恢复。我试过运行一个包含外部的就地“开关”,但它没有任何效果。我很想做一个包括外部的“重新安置”,但警告很严厉!

1 个答案:

答案 0 :(得分:3)

Subversion通过名为svn:externals的属性跟踪外部。您需要做的是找到此外部属性所在的目录。不幸的是,这是Subversion的命令行版本比TortoiseSVN有很大优势的地方。幸运的是,大多数情况下,external位于svn:externals属性所在的目录下。

找到定义svn:externals属性的目录。然后右键单击该目录以获取上下文菜单,从上下文菜单中选择TortoiseSVN-> Properties。这将打开“属性”对话框。找到svn:externals属性,然后双击它。您现在将获得另一个对话框,您可以在其中编辑外部属性。

单击编辑... 按钮,然后更新属性。

一个小建议

外部属性可以包含整个URL,但您也可以指定与目录本身相关的URL。

例如,我们有一个名为ivy.dir的项目目录,其中包含所有项目使用的所有常春藤定义(以及FindBugs等其他插件)。假设这些项目在其根目录下包含此ivy.dir。这些其他项目是ivy.dir的姐妹项目目录。

我们可以通过这种方式定义外部:

http://svn/rsvp/trunk/ivy.dir ivy.dir

问题是当我分支项目时,ivy.dir仍然在中继线下并且将获得中继线的更改。这可能不是我想要的。另外,如果我重新定位整个结构或使用新服务器,我将失去外部定义 - 就像你一样。

相反,我用这种方式定义外部:

../ivy.dir ivy.dir

这表示外部位于一个目录中,然后位于ivy.dir项目目录下。现在,当我分支,或者如果我重新定义使用的协议,或者移动我的服务器时,我的外部定义不会改变。

由于您正在编辑外部定义,因此您可能需要记住将外部关系重新定义为存储库定义的目录,而不是绝对URL。