我正在尝试在 Windows 机器上设置svn:externals
TortoiseSVN。我有两个项目,并且已经在同一台本地机器上创建了两个存储库。
目前的结构是这样的。我为存储库和工作目录(结帐)创建了repoA
, 。repoB
workA
workB
存储库
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' 但我不确定它的含义。