【问题标题】:SVN Trunk, Branches, and Tags Folder QuestionSVN 主干、分支和标签文件夹问题
【发布时间】:2012-02-03 18:42:36
【问题描述】:

我正在阅读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 进行更新,我将另外获得不需要的分支和标签文件夹。我的要求是不合理(仅获取主干文件)还是我是合理的,有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:
    svn co http://mycompany.com/svn/Projects/Project1/trunk ./project1-trunk
    

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

    【讨论】:

    • 嗯,我明白了,所以我可以为我的所有项目目录创建一个脚本来执行此操作。这可以接受吗?我的意思是,不是教我的同事如何创建一个 SVN 结账,让他们运行一个脚本? (实际上,这可能会让每个人都更轻松)
    • @sooprise :如果您在 Windows 上,请检查 TortoiseSVN
    • 对,很抱歉在 OP 中没有提到这一点,但是是的,我们使用的是 windows 和乌龟。话虽如此,编写一个脚本来进行初始签出而不是手动签出每个项目的主干似乎仍然是一个更好的主意。
    • 教你的同事如何正确使用SVN。提交、签出、合并等并不难学,尤其是在使用 TortoiseSVN 时。
    • @Bernard 所说的 x10;也可能想看看 IDE 集成。如果您使用 Visual Studio,VisualSVN 非常棒,而且通常值得。 Eclipse 具有良好的原生集成。
    【解决方案2】:

    另一个选项(也在svnbook 中)是拥有一个 集主干、标签和分支。

    不过,以全面披露的名义,我们将提到另一种非常常见的布局。在此布局中,主干、标签和分支目录位于存储库的根目录中,而您的项目位于这些目录下的子目录中,如下所示:

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

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

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

    【讨论】:

    • 这就是我现在更喜欢的工作方式,仅分支 'calc' 确实意味着您必须分支所有内容……但它很便宜,因此与资源 PoV 无关。这确实意味着您也可以对所有常用目录进行分支,这很有用。如果您在同一个存储库中有许多相关的“项目”,这可能是最好的方法。
    • 实际上,您也可以单独分支calc(只需将calc 复制到branches 中的某个内容)。一个好的命名方案会很有帮助(calc-123trunk-123)。
    【解决方案3】:

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

    继续阅读!

    【讨论】:

    • 对,但是我的存储库包含许多项目文件夹,每个项目文件夹都有自己的主干、分支和标签文件夹。现在,如果我是一名新员工,并且我想创建所有项目主干文件的工作副本,那么必须手动检查每个项目的主干似乎很费力,但似乎我可以编写一个脚本来为那些才刚刚开始。
    • 或者你可以为每个项目创建一个单独的存储库,如果这样对你来说更容易的话。
    • 每个目录都有一个对应的 URL。不要使用存储库根的 URL,使用指定要复制的目录的 URL。
    【解决方案4】:

    假设您正在使用上述布局并希望使用一个命令检查所有项目的所有主干,请考虑以下技术:

    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
      

    现在,每次您想要获得包含所有项目主干的工作副本时,您只需签出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:externalsall-trunks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2012-09-14
      • 2015-03-28
      • 2011-07-05
      • 1970-01-01
      • 2011-10-16
      相关资源
      最近更新 更多