最近,我一直在尝试使用svn:externals
,并在执行SVN Update
时收到错误消息。
Z:\项目\ workB \主干
无法重新定位' Z:\ Projects \ workB \ trunk'因为它不是工作的根源
副本;尝试重新定位' Z:\ Projects \ workB'代替
正如this page所示,我通过上下文菜单在TortoiseSVN → Relocate
上执行了Z:\Projects\workB
。然后我收到了这个消息框。
您似乎正在尝试将工作副本重定位到同一存储库中的其他路径。
发件人:file:/// Z:/ repos / repoB
收件人:file:/// Z:/ repos / repoB
这是正常的吗?尽管警告消息表示不同的路径,但From:
和To:
路径都是相同的。我想知道在这里按YES是否可以。
这可能是相关的:Problem trying to relocate WC to new repository
[更新]
为了解释我做了什么导致第一个错误(无法重定位等),当前目录结构是这样的。
Z:\回购\ repoA
Z:\回购\ repoB
Z:\项目\ workB
Z:\Projects\workB
是存储库repoB
的结帐。我通过以下步骤在svn:externals
上创建了Z:\Projects\workB
。 (我尝试将整个主干文件夹及其内容从repoA
导入Z:\Projects\workB\trunk
。我有理由这样做,但这将是一个很长的故事。)
Z:\Projects\workB
并选择TortoiseSVN -> Properties
New -> Externals
New...
键入" trunk"对于本地路径和" file:/// Z:/ repos / repoA / trunk"用于URL并关闭设置窗口。
右键单击Z:\Projects\workB
并选择SVN Commit...
并按“确定”以应用外部定义。提交已经完成。
Z:\Projects\workB
并选择了SVN Update
我得到了第一个错误,即尝试重新定位。
答案 0 :(得分:4)
不,不,不!
永远不要使用file:///
网址 - 特别是对于共享项目。这很糟糕,很可怕,这不是一个好主意。
如果没有别的,请使用svnserve
进程启动Subversion服务器。它非常简单,没有人可以直接访问您的Subversion存储库目录。
在使用Subversion时,file://
网址很好,但绝不应该与实际项目一起使用。如果您想要一个开源的Subversion服务器,请查看CollabNet的Subversion Edge。这将允许您在Windows服务器上通过http://
提供存储库。另一个受欢迎的是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签出到trunk,其中trunk已经是repoB中的一个目录。
在这种情况下,只需删除file:///Z:/repos/repoB/trunk
。