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

当前的结构看起来像这样。我为存储库创建了repoArepoB,并为工作目录( checkout )创建了workAworkB

存储库



工作目录



(有tagsbranches文件夹,但为了使问题保持​​简单而省略了它们。)

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

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

  • checkout workA并将其分配给repoA,并 checkout workB并将其分配给repoB
  • 提交了workA\trunk文件夹,因此repoA是最新的。
  • 在oreder中,为workB\trunk\lib分配导入位置,右键单击workB文件夹,然后选择TortoiseSVN -> Properties
  • 单击New -> Externals,然后单击New...
  • ./trunk/lib表单字段中键入Local path。对于URL字段,键入file:///Z:/repos/repoA/trunk/lib。通过按下...按钮, repo 浏览器打开并帮助选择目标文件夹。

  • 单击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一定是错误的。我不知道。如果您能指出我做错了什么,将不胜感激。

    更新



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

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



    谢谢,当我重新选择Property文件夹的workB并单击Editsvn:externals按钮时,TortoiseSVN自动将./trunk/lib调整为trunk/lib。现在将是这样。



    我右键单击Z:\repos\repoB,然后选择TortoiseSVN -> repo-browser,然后向下浏览到主干文件夹。看起来如下。看起来对不对?我真的不知道,因为我从未从事过此任务。主干文件夹下的lib文件夹在 repo 浏览器中为空。
    Z:\Projects\workB\trunk\lib文件夹仍然为空。该错误消息建议重新定位“Z:\Projects\workB”,但我不确定这意味着什么。

    最佳答案

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

    6a-将更改后的工作副本WorkB提交到仓库

    和一个可选的检查点

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

    我不记得为什么,但是我从来没有在TSVN中的URL的路径规范中使用./(我想您的情况下“trunk/lib”会更安全)。和纯粹的个人习惯-我在安装时定义了外部,即使结果是我在 repo 协议(protocol)中得到了多个定义,而不是在根目录中聚合了一个

    具有外部树形结构和定义的 repo 浏览器

    关于svn - 设置SVN :Externals with TortoiseSVN in Windows,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12861082/

    10-13 05:32