我正在尝试在 Windows 机器上设置svn:externalsTortoiseSVN。我有两个项目,并且已经在同一台本地机器上创建了两个存储库。
目前的结构是这样的。我为存储库和工作目录(结帐)创建了repoA, 。repoBworkAworkB
存储库
Z:\repos\repoA
Z:\repos\repoB
工作目录
Z:\Projects\workA\trunk\core.php
Z:\Projects\workA\trunk\lib\lib01.php
Z:\Projects\workB\trunk\core_mod.php
Z:\Projects\workB\trunk\lib\
(有tags和branches文件夹,但为了简单起见,它们被省略了。)
我想要实现的是workA\trunk\lib\在这种情况下lib01.php将文件自动复制到workB\trunk\lib\目录中。
为了进行设置,我所做的如下:
- 签出
workA并分配给repoA签出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-browser 打开并帮助选择目标文件夹。

单击
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一定是错误的。我不知道。如果您能指出我做错了什么,将不胜感激。
更新
6a - 提交更改的工作副本 WorkB 到 repo
这对我来说是一个盲点。我右键单击Z:\Projects\workB并选择SVN Commit...它,它给出了以下错误。

立即单击“确定”按钮后,我得到一个对话框窗口,询问是否更新文件夹,然后单击“确定”。然后 TortoiseSVN 开始更新Z:\Projects\workB,我得到了这个错误。但在此之后,当我重新提交时Z:\Projects\workB,它没有错误地通过。

(我想,在你的情况下,“trunk/lib”会更防弹)。
谢谢,当我重新选择Property文件workB夹并单击Edit按钮时svn:externals,TortoiseSVN 自动调整./trunk/lib为trunk/lib. 现在它被设置为如此。
6b - 在 RepoB 上使用 repobrowser 进行测试(最快的方式),该定义是正确的
我右键单击Z:\repos\repoB并选择TortoiseSVN -> repo-browser并向下浏览到主干文件夹。它看起来如下。看起来对吗?我真的不知道,因为我从来没有做过这个任务。在 repo-browser 中,trunk 文件夹下的 lib 文件夹为空。

Z:\Projects\workB\trunk\lib文件夹还是空的。错误消息建议重新定位 'Z:\Projects\workB' 但我不确定它的含义。
