管理相同代码库的略有不同版本的源代码管理的最佳方法

时间:2011-07-20 17:04:23

标签: version-control mercurial

我已经看到这个问题以几种不同的方式提出,每次,答案都是变通方法或不必维护2个或更多不同版本的方法。但是,我不认为我的环境(Visual Foxpro)有任何变通方法。目前我维护着两个不同的存储库:

  • 直播 - 生产代码
  • 证明 - 偶尔与Live相同,但通常是一个 测试任何一个新功能以及a 暂停区域以更改为Live

我只是没有办法用分支来处理这种情况,因为Proof花费了大部分时间(如果不是全部的话)看起来更像是一个分叉。例如,目前有大量的代码与我们已经玩了近一年的Live大不相同。目前还有大约10个与Live不同的小功能,这些功能处于不同的批准阶段。

有很多天我在两个存储库之间进行差异和合并,我问自己,为什么这不能成为相同代码库的分支。但我只是不明白这是怎么可能的。证明是一个活生生的呼吸,我需要能够与Live分开编译和维护(尽管我发现在最后一个声明中没有任何内容可以排除单个代码库,这是我的困境)。

我是对的,Proof实际上更像是一个分支,因此必须在一个单独的存储库中维护吗?

顺便说一下,问题并不重要,但我选择的VCS是Mercurial。

2 个答案:

答案 0 :(得分:4)

我们在我的商店中的方式是use default and stable branches将实际发布的代码(实时)与正在处理的内容分开。

除了命名分支之外,我们还为每个新功能/添加提供了一个实质性的克隆。我们比default分支上有多个头部更舒服。

将已经发布的代码状态保存在自己的命名分支中有助于消除事故。通过简单地推送未准备好的东西而不是弄乱Live回购,你必须明确地将这些更改合并到Live分支。

答案 1 :(得分:1)

我不知道这对你的具体情况有多好,但是你可以将每个正在运行的更改作为一个单独的分支保存,并且Proof是当前的Live并且所有这些额外的分支合并在一起吗?然后它将作为一个非常具有前瞻性的集成检查,你也会知道每个分支应该可以合并到Live(假设它不依赖于尚未合并的东西)。