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

时间:2012-10-12 14:19:27

标签: svn tortoisesvn svn-externals

我正在尝试在Windows机器上使用TortoiseSVN设置svn:externals。我有两个项目,并且已经在同一台本地计算机上创建了两个存储库。

目前的结构如下所示。我为存储库创建了repoArepoB,为工作目录(结帐)创建了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. 在为workB\trunk\lib分配导入位置的过程中,右键单击workB文件夹并选择TortoiseSVN -> Properties
  4. 点击New -> Externals,然后点击New...
  5. ./trunk/lib表单字段中输入Local path。对于URL字段,请键入file:///Z:/repos/repoA/trunk/lib。按下...按钮,repo-browser打开并帮助选择目标文件夹。

    enter image description here

    enter image description here

  6. 点击Ok几次以关闭设置窗口。我认为外部设置已经完成。

  7. 创建了一个文件Z:\Projects\workB\trunk\core_mod.php
  8. 右键点击Z:\Projects\workB\trunk\并选择SVN ComitworkB推荐给repoB
  9. 我希望此时,lib01.php会自动导入Z:\Projects\workB\trunk\lib文件夹,但不会复制任何内容。我还通过右键单击SVN Update文件夹尝试workB\trunk。但workB\trunk\lib文件夹保持空白。

    我怀疑相对路径./trunk/lib一定是错的。我不知道。如果你能指出我做错了什么,我们将不胜感激。

    更新

      

    6a - 提交将Work Copy WorkB更改为repo

    这对我来说是一个盲点。我右键点击了Z:\Projects\workB并选择了SVN Commit...,它出现了以下错误。

    enter image description here

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

    enter image description here

      

    (在你的情况下,“trunk / lib”会更加防弹,我猜)。

    谢谢,当我重新选择Property workB文件夹并点击Edit的{​​{1}}按钮时,TortoiseSVN自动将svn:externals调整为{{ 1}}。现在它已经确定了。

      

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

    我右键单击./trunk/lib并选择trunk/lib并浏览到行李箱文件夹。它看起来如下。看起来不错吗?我真的不知道,因为我从未参与过这项任务。在repo-browser中,trunk文件夹下的lib文件夹为空。

    enter image description here

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

2 个答案:

答案 0 :(得分:3)

您忘记了至少一项强制措施

6a - 提交将Work Copy WorkB更改为repo

和一个可选的检查点

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

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

在树中显示外部的repo-browser并显示定义

Repo-Browser

答案 1 :(得分:0)

对于遇到此问题的任何人,workB的工作目录不需要导入文件夹。

  

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

     

Z:\项目\ workA \树干\ lib中\ lib01.php

     

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

     

Z:\项目\ workB \树干\ lib中\

必须是

  

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

     

Z:\项目\ workA \树干\ lib中\ lib01.php

     

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

     

Z:\项目\ workB \树干\

(没有Z:\ Projects \ workB \ trunk \ lib)