2

最近我一直在尝试svn:externals并开始在执行SVN Update.

Z:\Projects\workB\trunk

无法重新定位“Z:\Projects\workB\trunk”,因为它不是工作的根

复制; 尝试重新定位 'Z:\Projects\workB'

在此处输入图像描述

正如这个页面所暗示的,我通过上下文菜单执行TortoiseSVN → RelocateZ:\Projects\workB然后我得到这个消息框。

您似乎正在尝试将您的工作副本重新定位到同一存储库中的不同路径。

来自:file:///Z:/repos/repoB

收件人:file:///Z:/repos/repoB

在此处输入图像描述

这是正常的吗?尽管警告消息显示不同的路径,但两者From:To:路径都是相同的。我想知道是否可以在这里按“是”。

这可能是相关的:Problem trying relocate WC to new repository


[更新]

为了解释我做了什么导致第一个错误(无法重新定位等),当前目录结构是这样的。

Z:\repos\repoA

Z:\repos\repoB

Z:\项目\workB

Z:\Projects\workB是对存储库的检出repoB。我通过以下步骤创建svn:externals了一个。Z:\Projects\workB(我尝试将整个主干文件夹及其内容从 to 导入repoAZ:\Projects\workB\trunk我想这样做是有原因的,但这将是一个漫长的故事。)

  1. 右键单击Z:\Projects\workB并选择TortoiseSVN -> Properties

  2. New -> Externals

  3. 按下New...

  4. 为本地路径输入“trunk”,为 URL 输入“file:///Z:/repos/repoA/trunk”并关闭设置窗口。

    在此处输入图像描述

  5. 右键单击Z:\Projects\workB并选择SVN Commit...并按确定以应用外部定义。提交通过了。

  6. 要查看是否导入了外部文件,我右键单击Z:\Projects\workB并选择SVN Update

我得到了第一个错误,说尝试重新定位。

4

1 回答 1

4

不不不!

永远不要使用file:///URL——尤其是在共享项目中。这很糟糕,很糟糕,这不是一个好主意。

如果不出意外,请使用该svnserve过程启动 Subversion 服务器。这相当简单,没有人可以直接访问您的 Subversion 存储库目录。

file://URL 在使用 Subversion 时很好用,但绝不应在实际项目中使用。如果您想要一个开源 Subversion 服务器,请查看 CollabNet 的Subversion Edge 。http://这将允许您在 Windows 服务器上提供您的存储库。另一个流行的是VisualSVN Server。它不是开源的,但很多人喜欢设置 Subversion 存储库的免费版本。


你没有提供太多信息。您是否意识到在 Subversion 中您可以在工作目录中签出您想要处理的文件?例如:

 C:> cd C:\workdir
 C:> svn co file:///Z:/Projects/workB/trunk workB-trunk

这将在 C:\workdir\workB-trunk 上创建一个本地副本。这是您可以玩弄文件的地方。请注意您的存储库与您签出的文件的位置不同。我有一种感觉,这就是为什么你会看到搬迁的东西。

要使用svn:externals,您需要将该svn:externals属性放在项目的目录中:

 C> cd \workdir\workB-trunk
 C> svn propset svn:externals "^/Z:/Projects/WorkC/trunk workC" .
 C> svn update

这会将最新版本file:///Z:/Projects/WorkC/trunk的 workB-trunk 放入您的工作副本中。提交更改,每个人在结帐时都会得到这个file://Z:/Projects/WorkC/trunk


解决方案

万一……你碰巧有一个文件:///Z:/repos/repoB/trunk?如果是这样,您正在尝试将 repoA 检出到主干中,其中主干已经是 repoB 中的目录。

在这种情况下,只需删除file:///Z:/repos/repoB/trunk.

于 2012-10-15T19:40:29.060 回答