2013-08-02 34 views
0

语境SVN - 项目为其分支已经做了下一个分支的影响

我在公司使用的一个项目,这是每一个新功能是时候已经安装一个简单的过程开发和尚未测试,它应该留在它的分支,只有当验证通过,分支可以合并回到主干。这部分工作很好,但是从现在开始第二个开发人员也在开发项目,并且由于项目中的特定数据格式。

在项目文件夹中,我们有一个“字典”文件,其中包含键=值对,但关键仅仅是一个数字(这是遗留的且无法更改)。然后这个“字典”文件中的键被用在许多其他源文件/数据文件中。通常使用键值并按顺序添加。

让我们在后备箱R100说,在词典中最新的条目是1000

开发一个从主干R100创建分支A,然后在该分支增加的200项字典中,字典最新条目现在为1200.开发人员A使用条目1001至1200来开发新的源文件或数据文件。

然后,Dev B从中继r100创建分支A(因为分支A未验证,所以尚未重新集成),因此此时在分支B中,词典最新条目为1000.Deb B将300在这个分支的词典中,词典的最新条目现在是1300.Deb B使用条目1001到1300来开发新的源或数据文件。

Dev完成分支验证并将其分支A合并回/重新集成到主干,没问题,干线中的字典现在与分支A相同,因此包含1200个条目。

现在的问题是,如果Dev B想从树干更新分支B(或直接将分支B合并回树干),词典文件中会有很多冲突,因为会有200具有公用密钥(1001至1200)但具有不同值的条目。目前解决冲突对于开发团队来说是烦人的而且有点痛苦。

可能的解决方案?

我原以为以下几点:

  1. 每次词典已经于一体的分公司,一直致力于中,开发 负责这个部门的应合并回字典到 树干。然后,当其他分支上的其他分支从主干更新他们自己的分支 时,他们将获得仅在另一分支上修改 的字典内容
  2. 开发人员在创建分支时一起进行通信a为词典文件分配一个范围的键,

解决方案1的问题是,在我的理解中,它打破了分支本身的隔离概念。

解决方案2的问题在于它不可靠并且效率不高。

我错过了一些东西,在这种情况下使用分支的方式是不相关的?也许字典文件不应该在分支中分支,只保留在主干(部分分支?!)?

预先感谢您对此的帮助和想法。

回答

2

我看到至少有两种可能的方式

  1. 逻辑扩展您的解决方案1:词典不能永久合并到各分公司,但存在并用作单个公共共享资源。 SVN:外部,文件级别的类型(需要Subversion 1.6+,我会建议1.8。*)。实现 - 真正的字典文件存在于/ trunk之外,trunk中的字典外部以绝对路径存档(不相对,以便在分支上具有不变的目标)。这样,所有分支随时都会使用一个通用字典(如果有两个并行编辑,第二个提交者必须在实际提交之前更新文件,并合并更改以解决密钥冲突)
  2. 每个开发人员不使用顺序,而是使用稀疏编号(基于协议的编号)。也就是说,在每个时刻不超过10个开发人员的假设中:开发人员0只使用0,10,20 ...开发1 - 1,11,21 ...开发9 - 9,19,29 ...字典的变化将不会在合并键上相交
+0

我喜欢第一个建议。漂亮而整洁。我认为外部应该添加到'trunk'中,并且合并到现有的分支中,并且任何新的'trunk'分支也将获得它。 –

+0

谢谢你的建议,我会尝试下周你提到的第一个,并让你知道它是如何去的。 (在接受答案之前,我会稍等一会儿) –