我正在尝试在Windows计算机上使用TortoiseSVN设置svn:externals
。我有两个项目,并且两个存储库都已在同一本地计算机上创建。
当前的结构看起来像这样。我为存储库创建了repoA
,repoB
,并为工作目录( checkout )创建了workA
和workB
。
存储库
工作目录
(有tags
和branches
文件夹,但为了使问题保持简单而省略了它们。)
我想要实现的是workA\trunk\lib\
下的文件,在这种情况下,lib01.php
将被自动复制到workB\trunk\lib\
目录中。
为了进行设置,我要做的如下:
workA
并将其分配给repoA
,并 checkout workB
并将其分配给repoB
workA\trunk
文件夹,因此repoA
是最新的。 workB\trunk\lib
分配导入位置,右键单击workB
文件夹,然后选择TortoiseSVN -> Properties
。 New -> Externals
,然后单击New...
./trunk/lib
表单字段中键入Local path
。对于URL
字段,键入file:///Z:/repos/repoA/trunk/lib
。通过按下...
按钮, repo 浏览器打开并帮助选择目标文件夹。Ok
几次以关闭设置窗口。我认为外部设置已经完成。 Z:\Projects\workB\trunk\core_mod.php
Z:\Projects\workB\trunk\
并选择SVN Comit
以将workB
命名为repoB
。 我期望此时,lib01.php会自动导入
Z:\Projects\workB\trunk\lib
文件夹中,但不会复制任何内容。我还通过右键单击SVN Update
文件夹尝试了workB\trunk
。但是workB\trunk\lib
文件夹保持为空。我怀疑相对路径
./trunk/lib
一定是错误的。我不知道。如果您能指出我做错了什么,将不胜感激。更新
这对我来说是一个盲点。我右键单击
Z:\Projects\workB
并选择SVN Commit...
,它给出了以下错误。单击确定按钮后,立即出现一个对话框,询问是否更新文件夹,然后单击确定。然后TortoiseSVN开始更新
Z:\Projects\workB
,我得到了这个错误。但是在此之后,当我重新提交Z:\Projects\workB
时,它没有出错。谢谢,当我重新选择
Property
文件夹的workB
并单击Edit
的svn:externals
按钮时,TortoiseSVN自动将./trunk/lib
调整为trunk/lib
。现在将是这样。我右键单击
Z:\repos\repoB
,然后选择TortoiseSVN -> repo-browser
,然后向下浏览到主干文件夹。看起来如下。看起来对不对?我真的不知道,因为我从未从事过此任务。主干文件夹下的lib文件夹在 repo 浏览器中为空。Z:\Projects\workB\trunk\lib
文件夹仍然为空。该错误消息建议重新定位“Z:\Projects\workB”,但我不确定这意味着什么。 最佳答案
您忘记了至少一项强制性措施
6a-将更改后的工作副本WorkB提交到仓库
和一个可选的检查点
6b-在RepoB上使用repobrowser测试(这是最快的方法),该定义是正确的
我不记得为什么,但是我从来没有在TSVN中的URL的路径规范中使用./(我想您的情况下“trunk/lib”会更安全)。和纯粹的个人习惯-我在安装时定义了外部,即使结果是我在 repo 协议(protocol)中得到了多个定义,而不是在根目录中聚合了一个
具有外部树形结构和定义的 repo 浏览器
关于svn - 设置SVN :Externals with TortoiseSVN in Windows,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12861082/