0

我们正在工作中升级我们的源代码控制(最有可能是Vault)并且正在转向分支方法,并且在制定要使用的文件夹结构时遇到了一些问题。

我们打算使用主干作为开发线,分支将是一个版本和对该版本的错误修复。

我们提出了两种文件夹结构,我想知道它们各自的优缺点是什么:

Projects
  |-> Trunk
    |-> Data Access
    |-> Business
    |-> Desktop
    |-> Website
  |-> Branches
    |-> Branch 01
      |-> Data Access
      |-> Business
      |-> Desktop
      |-> Website

Projects
  |-> Data Access
    |-> Trunk
    |-> Branches
      |-> Branch 01
  |-> Business
    |-> Trunk
    |-> Branches
      |-> Branch 01
  |-> Desktop
    |-> Trunk
    |-> Branches
      |-> Branch 01
  |-> Website
    |-> Trunk
    |-> Branches
      |-> Branch 01

如果我们在构建机器(Cruisecontrol.net)上使用源代码控制块和第一个解决方案,我们可以说:

<path>$\Projects\trunk\</path>

建立一个分支会非常相似,但是是否可以在文件夹中选择最新的分支branches?否则我们将不得不为每个版本编辑 ccnet 配置。

如果要使用第二种方法(很多人建议这种方法),构建机器将如何拾取所有相关项目?像这样的东西可能:

<path>$\Projects\*\trunk\</path>

如果一些项目已经分支但其他项目没有,我怎样才能在不存在分支的情况下让它成为主干(如果可能的话)。

会得到所有的树干,然后用树枝覆盖吗?如果它试图访问一个不存在的分支会不会出错?

4

3 回答 3

3

第一种方法非常可靠。您确切地知道您要运送什么(因为每个版本都有一个入口点:主干或分支/标签)。

我发现第二种方法存在几个问题:

  1. 所有项目必须同时分支/标记
  2. 必须为每个项目单独完成合并

这两种选择都是可能的,但我认为第一种是最简单但也是最安全的选择。

由于该网站很可能独立于版本(如果您从 2007 年创建的分支发布,您不会选择 2007 年的网站,而是 2009 年的网站)。

Project
  |
  +- Trunk

Website
  |
  +- Trunk
于 2009-03-23T21:54:06.393 回答
0

最后我写了一个源代码控制插件(使用 Vault 的 API)来允许我在<folder>标签中指定一些额外的东西:

<folder>$/branches/%latest%</folder>

将检索分支文件夹中的最新分支。

于 2009-03-26T15:16:00.880 回答
0

我更喜欢细粒度、非常有组织、自包含、结构化的存储库。有一个图表说明了存储库维护过程的一般(理想)方法。例如,我最初的存储库结构(每个项目存储库都应该有)是:

/project
    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases
于 2009-11-19T11:57:52.410 回答