Subversion中代码推广和功能分支的最佳设置?

时间:2009-02-19 22:12:33

标签: visual-studio svn version-control vb6

我们是一个4人团队,并且在几年内离我们的舒适区不远,但我们正在成长,并希望赶上时代。我的任务是找到实现持续集成的最佳方式(自动构建,代码维护和新功能的分支等)。我们正在考虑从SourceSafe 2005切换到Subversion来处理我们的版本控制。从我读过的内容来看,Subversion是进行代码推广,分支和分支之间合并的更好选择。我们可能会使用以下产品:

  • VisualSVN服务器
  • TortoiseSVN(与Windows资源管理器集成)
  • VisualSVN(与Visual Studio 2005集成)
  • SVNVB6(与Visual Basic 6集成)
  • 的FinalBuilder

为代码促销和功能分支组织存储库的最佳方法是什么?以下是我们当前SourceSafe结构的示例:

    • Visual Studio 2005项目
      • 项目名
        • 此处的解决方案文件,项目文件和代码文件
        • \ BIN
          • \推出
            • 此处编译的发布二进制文件
    • Visual Basic 6项目
      • 项目名
        • 此处的项目文件和代码文件
        • 此处编译的二进制文件(.dll,.exe,.ocx)
    • 文档
      • 此处的文档文件

我们应该像这样结构吗?

    • 分支(每个分支从主干)
      • Development.FeatureA
      • Development.FeatureB
      • 测试(每晚用FinalBuilder建造???)
      • 制作(每晚使用FinalBuilder建造???)
      • Production.BugFixA(反向集成到生产分支,测试分支和主干???)
    • 标记
      • Development.v1(每次成功构建后标记)
      • Development.v2
      • Development.v3
      • Test.v1
      • Test.v2
      • Test.v3
      • Production.v1
      • Production.v2
      • Production.v3
    • trunk(开发代码 - 每晚使用FinalBuilder构建)
      • Visual Studion 2005项目
        • 项目名
          • 此处的解决方案文件
          • 项目名
            • 此处的项目文件和代码文件
      • Visual Basic 6项目
        • 项目名
          • 此处的项目文件和代码文件

由于我们的大部分软件仍然是COM(VB6)并且需要注册(使用regsvr32),二进制文件是否应该受版本控制?当我们需要处理不同的分支(可能具有不同的COM兼容性)时,我们应该如何处理注册/取消注册组件?

我们离开了吗?

1 个答案:

答案 0 :(得分:2)

首先,不要使用顶级trunk分支标签,使用每个项目的trunk分支标签,如下所示:

/Projects
  /CashCowProject
    /branches
    /tags
    /trunk
      /vs
      /doc

这意味着跟踪工具可以查看http://svn/Projects/CashCowProject并查看该项目的所有活动,而不会在任何其他项目上获得任何活动。它还会强制您控制项目之间的引用,这意味着如果没有主干中的条目,您的顶级项目将不会更改。

当项目相互引用时,使用svn:externals从您需要的库项目中提取标记。使用红豆书中描述的供应商分支来处理第三方库,甚至是二进制文件。

在SVN中保存库二进制文件是可以的。可能想为此考虑一个单独的存储库,尽管我们不这样做。

对于代码促销,为特定版本保留一个稳定的分支,并且只从trunk到该分支合并,然后从该分支进行标记。这将为您提供每个版本中可用内容的可审计记录。

如果您不打算引入源代码并构建它,可以将COM二进制文件保留在那里。您可以为tortoise编写一个升级后脚本,它将遍历注册它找到的任何COM对象。