SVN中继,分支和标签文件夹问题

时间:2012-02-03 18:42:36

标签: svn tortoisesvn

我正在阅读red bean SVN book,它会说明如下布局主干,分支和标签文件夹:

$ svn list file:///var/svn/multi-project-repo
project-A/
project-B/
$ svn list file:///var/svn/multi-project-repo/project-A
trunk/
branches/
tags/
$ svn list file:///var/svn/multi-project-repo/project-B
trunk/
branches/
tags/
$

现在,这一切都很好,但是如果我想制作项目A和项目B的主干文件夹的本地工作副本该怎么办呢。如果我使用指向“multi-project-repo”的URL进行更新,我将另外获取我不需要的分支和标签文件夹。我问的是不合理的(只获取主干文件)或者我是否合理,是否有一种简单的方法可以做到这一点?

4 个答案:

答案 0 :(得分:3)

svn co http://mycompany.com/svn/Projects/Project1/trunk ./project1-trunk

这将把Project1 / trunk的工作副本放在本地目录./project1-trunk中。关于任何目录都没有任何内在的特殊 - 就SVN而言,它们只是目录,你可以复制它们中的任何一个。

答案 1 :(得分:3)

另一个选项(也在svnbook中)是一个一组主干,标签和分支。

  

但是,在完全公开的名义中,我们将提到另一个非常常见的布局。在此布局中,trunk,tags和branches目录位于存储库的根目录中,您的项目位于这些目录下的子目录中,如下所示:

/
   trunk/
      calc/
      calendar/
      spreadsheet/
      …
   tags/
      calc/
      calendar/
      spreadsheet/
      …
   branches/
      calc/
      calendar/
      spreadsheet/
      …

这是另一种常见的布局,如果项目更密切相关或一起工作,可能会更有意义。

在这种情况下,获取主干,您将获得所有项目。这就是我们设置存储库的方式。

答案 2 :(得分:1)

使用您关注的存储库目录的URL。如果你想要“trunk”目录,请查看该子目录,而不是整个存储库。

继续阅读!

答案 3 :(得分:0)

假设您正在使用提到的布局并希望使用一个命令检出所有项目的所有中继,请考虑以下技术:

  1. 在SVN中创建一个额外的项目,例如称之为all-trunks

    svn mkdir file:///var/svn/multi-project-repo/all-trunks
    
  2. 制作all-trunks的工作副本:

    svn co file:///var/svn/multi-project-repo/all-trunks
    
  3. 编辑all-trunks工作副本的svn:externals属性以添加您拥有的所有项目中继:

    svn propedit svn:externals .
    ...
    ^/project-A/trunk project-A
    ^/project-B/trunk project-B
    ...
    
  4. 提交:

    svn ci
    
  5. 现在,每当您想要获得包含所有项目中继的工作副本时,您只需要查看all-trunks

    svn co file:///var/svn/multi-project-repo/all-trunks
    

    每次创建新项目时都不要忘记将其添加到svn:externals。

    您可以编写一个脚本来获取所有项目的列表svn ls file:///var/svn/multi-project-repo(不包括all-trunks),并构建一个更新svn:externals all-trunks的命令。