7

我正在尝试在 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\

(有tagsbranches文件夹,但为了简单起见,它们被省略了。)

我想要实现的是workA\trunk\lib\在这种情况下lib01.php将文件自动复制到workB\trunk\lib\目录中。

为了进行设置,我所做的如下:

  1. 签出workA并分配给repoA签出workB并分配给repoB
  2. 提交了workA\trunk文件夹,所以它repoA是最新的。
  3. 为了为其分配导入位置workB\trunk\lib,右键单击workB文件夹并选择TortoiseSVN -> Properties.
  4. 单击New -> Externals并单击New...
  5. ./trunk/libLocal path表单字段中输入。对于该URL字段,键入file:///Z:/repos/repoA/trunk/lib. 通过按下...按钮,repo-browser 打开并帮助选择目标文件夹。

    在此处输入图像描述

    在此处输入图像描述

  6. 单击Ok几次以关闭设置窗口。我假设外部设置已完成。

  7. 创建了一个文件,Z:\Projects\workB\trunk\core_mod.php
  8. 右键单击Z:\Projects\workB\trunk\并选择SVN Comit提交workBrepoB

我预计此时 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/libtrunk/lib. 现在它被设置为如此。

6b - 在 RepoB 上使用 repobrowser 进行测试(最快的方式),该定义是正确的

我右键单击Z:\repos\repoB并选择TortoiseSVN -> repo-browser并向下浏览到主干文件夹。它看起来如下。看起来对吗?我真的不知道,因为我从来没有做过这个任务。在 repo-browser 中,trunk 文件夹下的 lib 文件夹为空。

在此处输入图像描述

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

4

2 回答 2

3

您至少忘记了一项强制性操作

6a - 提交更改的工作副本 WorkB 到 repo

和一个可选的检查点

6b - 在 RepoB 上使用 repobrowser 进行测试(最快的方式),该定义是正确的

不记得为什么,但我从不在 TSVN 中的 URL 的路径规范中使用 ./ (我想,在你的情况下,“trunk/lib”会更防弹)。和纯粹的个人习惯 - 我在挂载点定义外部,即使结果我在 repo 中得到多个定义,而不是在 root 中聚合一个

带有外部树和定义的回购浏览器

回购浏览器

于 2012-10-12T14:53:10.113 回答
0

For anybody who comes across this issue, the working directory of workB did not need the importing folder.

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\

had to be

Z:\Projects\workA\trunk\core.php

Z:\Projects\workA\trunk\lib\lib01.php

Z:\Projects\workB\trunk\core_mod.php

Z:\Projects\workB\trunk\

( no Z:\Projects\workB\trunk\lib)

于 2012-10-13T01:12:33.993 回答