svn:externals
。我有两个项目,这两个仓库已经在同一台本地机器上创建好了。当前的结构如下。我创建了
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...
在
Local path
表单字段中输入./trunk/lib
。对于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
文件夹中,但没有复制任何内容。我还尝试通过右键单击workB\trunk
文件夹来进行SVN Update
。但是workB\trunk\lib
文件夹仍然为空。
我怀疑相对路径./trunk/lib
可能是错误的。我不知道。如果您能指出我的错误,我将不胜感激。
更新
6a - 将更改后的工作副本WorkB提交到repo
这是我的盲点。我右键单击Z:\Projects\workB
并选择SVN Commit...
,它给出以下错误。
(在您的情况下,“trunk/lib”可能更加健壮)。
谢谢,当我重新选择“workB”文件夹的“属性”并单击“svn:externals”的“编辑”按钮时,TortoiseSVN自动将“./trunk/lib”调整为“trunk/lib”。现在已经设置好了。
6b-使用RepoB上的repobrowser测试(最快的方法),该定义是否正确
我右键单击“Z:\repos\repoB”,选择“TortoiseSVN -> repo-browser”,然后浏览到主干文件夹。它看起来如下所示。是否正确?我真的不知道,因为我从未处理过这个任务。在repo-browser中,主干文件夹下的lib文件夹为空。
“Z:\Projects\workB\trunk\lib”文件夹仍为空。错误消息建议重新定位“Z:\Projects\workB”,但我不确定它是什么意思。
Z:\Projects\workB\trunk\lib
,并在Z:\Projects\workB
上执行了SVN Update
。现在Z:\Projects\workB\trunk\lib\lib01.php
已经自动创建了。这是一个漫长的解决之旅。 - Teno