0

语境

我在我公司的项目中使用时设置了一个简单的流程,即每次新功能正在开发中且尚未测试时,它应该保留在其分支中,只有通过验证后,才能将分支合并回来到后备箱。这部分工作得很好,但由于项目中的特定数据格式,现在第二个开发人员也在从事该项目。

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

例子

假设在 r100 后备箱中,字典中的最新条目是 1000。

开发者 A 从主干 r100 创建分支 A,然后在这个分支中添加 200 个词条到字典中,字典的最新词条现在是 1200。开发者 A 使用词条 1001 到 1200 来开发新的源文件或数据文件。

然后开发者B从主干r100创建分支A(因为分支A没有被验证它还没有重新集成),因此此时在分支B中,字典最新条目是1000。开发者B在字典中添加了300个条目在这个分支中,字典的最新条目现在是 1300。开发 B 使用条目 1001 到 1300 来开发新的源文件或数据文件。

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

现在的问题是,如果开发人员 B 想从主干更新分支 B(或将分支 B 直接合并回主干),字典文件中会出现很多冲突,因为会有 200 个具有公共键的条目(1001 到 1200)但不同的值。在这个时候解决冲突对开发团队来说很烦人,也有点痛苦。

可能的解决方案 ?

我想到了以下几点:

  1. 每次在一个分支中提交字典时,负责该分支的开发人员应将字典合并回主干。然后当其他分支上的其他开发人员从主干更新他们自己的分支时,他们将只在另一个分支上修改字典内容
  2. 开发人员在创建分支时一起进行通信,并从字典文件中为自己分配一系列键,

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

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

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

提前感谢您对此的帮助和想法。

4

1 回答 1

2

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

  1. 解决方案1的逻辑扩展:字典不会永久合并到所有分支中,而是作为单个公共共享资源存在并使用。SVN:externals,文件级类型(需要 Subversion 1.6+,我建议 1.8.*)。实现 - 真正的字典文件存在于 /trunk 的树之外,树干内的字典是外部的,具有文件的绝对路径(不是相对的,以便在分支时保持不变的目标)。这样,所有分支在任何时候都将使用一个通用字典(在两个并行编辑的情况下,第二个提交者必须在真正提交之前更新文件并合并更改以解决键冲突)
  2. 每个开发人员使用的不是顺序编号,而是稀疏编号(基于协议的编号)。即,假设每个时刻不超过 10 个开发人员:Dev 0 只使用 0,10,20... Dev 1 - 1, 11, 21... Dev 9 - 9, 19, 29...并且字典的更改不会在合并时与键相交
于 2013-08-02T07:20:52.110 回答