在Windows中使用TortoiseSVN设置SVN:外部

Ten*_*eno 7 svn tortoisesvn svn-externals

我正在尝试svn:externals在Windows机器上安装TortoiseSVN.我有两个项目,并且已在同一本地计算机上创建了两个存储库.

目前的结构看起来像这样.我创建repoA,repoB用于存储库和workAworkB对工作目录(检出).

Z:\回购\ repoA

Z:\回购\ repoB

工作目录

Z:\项目\ workA \干线\ core.php中

Z:\项目\ workA \干线\ LIB\lib01.php

Z:\项目\ workB \干线\ core_mod.php

Z:\项目\ workB \干线\ LIB \

(有tagsbranches文件夹,但它们被省略以保持问题简单.)

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

为了做到这一点,我所做的如下:

  1. 签出workA并分配repoA并签出workB并分配给repoB
  2. 提交workA\trunk文件夹,使其repoA是最新的.
  3. 在oreder中为其分配导入位置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到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并浏览到trunk文件夹.它看起来如下.看起来不错吗?我真的不知道,因为我从未参与过这项任务.repo-browser中trunk文件夹下的lib文件夹为空.

在此输入图像描述

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

Laz*_*ger 3

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

6a - 提交更改工作副本 WorkB 到存储库

和一个可选检查点

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

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

显示具有外部树和定义的存储库浏览器

回购浏览器