代码之家  ›  专栏  ›  技术社区  ›  Trav L

使用涉及多个项目的解决方案管理SVN的最佳实践

  •  1
  • Trav L  · 技术社区  · 15 年前

    在开始之前,以下内容基于通过使用OrtoiseSVN 1.6.x和ASP.NET web项目(以Visual Studio 2008为例)获得的知识。

    比如说,在欢乐日场景中,典型的subversion存储库结构可能类似于:

    /trunk
        /Solution1
            /ProjectA
            /ProjectB
            /ProjectC
    /tags
        /Solution1
            /version_1.0-rc
            /version_1.1
    /branches
        /users
            /travis
                /Solution1
            /john
                /Solution1
    
    • Solution1
    • 用户正在处理自己的解决方案分支,偶尔会合并回主干。没有人直接在后备箱上工作。
    • 只要有公共版本,就从主干创建标记。

    然而,在VisualStudio中,许多项目都不是简单的共享解决方案。存储库看起来更像:

    /trunk
        /CandyLand
            /Candy.Web.Pages
            /Candy.Web.Services
            /Candy.Tests
        /LollyApp
            /Lolly.App.WinForm
            /Lolly.App.Services
            /Lolly.Tests
        /Fundamental
            /Fundamental.BusinessObjects
            /Fundamental.DataAccess
        /Components.ExternalLibraries
            /Subsonic-2.2
            /Moq-3.1
            /Lucene.NET-2.0
    

    Candy Lolly Fundamental Components.ExternalLibraries 文件夹。

    假设在行李箱外工作,以便在 CandyLand Visual Studio解决方案,我需要从存储库中签出其文件以及所需的组件,因此解决方案结构可能类似于:

    + CandyLand
        + Candy.Web.Pages
        + Candy.Web.Services
        + Candy.Tests
        + Fundamental.BusinessObjects
        + Fundamental.DataAccess
        + Subsonic-2.2
        + Moq-3.1
    

    将签出和嵌套文件夹移到一起可能有点烦人,我们使用批处理脚本来完成这项工作。

    问题

    与标记相同,我无法创建同时包含产品解决方案的修订快照及其共享组件的标记。

    我走错方向了吗?我是否使此存储库太难管理?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Stefan    15 年前

    在下面的示例中 * 标记外部事件:

    + CandyLand
        + Candy.Web.Pages
        + Candy.Web.Services
        + Candy.Tests
        * Fundamental.BusinessObjects
        * Fundamental.DataAccess
        * Subsonic-2.2
        * Moq-3.1