1

在我工作的地方,我们有一个分支,仅用于检查正在进行的错误和任务。小任务在下周签到时被搁置和恢复。

我们开发了一个自动合并系统,这些小签到都合并到所有特定的项目分支。然后,在项目结束时,它被反向合并到主分支,从而自动转到另一个项目分支。

但是,假设我有一个带有Feature A的分支,另一个带有Feature B。我需要第三个,同时具有Feature A + Feature B + Bug Fixes。我不想反向合并它们,因为我不想弄乱主分支(还)

我从 Feature A 创建了一个分支,并启用了从"Feature A""Feature A+B"的自动合并。所以每个错误修复都是这样的:Main -> Feature A -> Feature A+B。并且 Feature A 中的每次签入都会转到 Feature A+B

现在我想做从"Feature B" 到 "Feature A+B" 的毫无根据的合并。

有没有办法在它们之间启用合并(在 TFS 内)?

我知道它会破坏层次结构,而且我知道我可以通过 执行 x 无基础合并tf.exe,或者手动(或使用任何已知工具)三向合并文件。

但我不负责这样做,这是另一个习惯了 Team Explorer 界面的开发人员,所以这会让他的生活更轻松。

现在,现在,我知道一个可能的答案/评论将是:

你需要重新审视你的分支结构,因为有问题!”

如果可能的话,把它和一些技巧放在一起,我目前正在尝试改变它,但我不确定当我们开发 2 个分离的项目时该怎么做,突然之间,需要放在一起。

4

2 回答 2

2

您对情况的评估是正确的,您需要在此处使用无根据的合并来建立 Feature B 和 Feature A+B 之间的关系。tbergstedt 是正确的,TFS 一旦建立起来就会记住分支之间的合并关系。因此,这意味着您只需要在这种情况下执行一次毫无根据的合并,然后 Team Explorer 中的正常合并 UI 将获取后续更改。

现在,就实际执行 baseless 合并而言,需要使用 /baseless 选项从 tf.exe 完成,除非您有 Team Explorer 2012 Beta 客户端。在 Team Explorer 2012 中,我们添加了在 UI 中执行无根据合并的功能。如果您没有,我建议您只执行第一次毫无根据的合并,然后让您的同事使用 UI 进行后续合并。

-Taylor,TFS 版本控制开发主管。

于 2012-04-11T01:54:25.993 回答
1

据我了解,一旦您使用 对两个分支进行了毫无根据的合并tf merge /baseless,TFS 就会记住这种关系,从那时起,任何用户都可以“正常”地在两个分支之间执行合并。

问题是,毫无根据的合并可能会检测到每个项目的冲突,您需要检查所有内容的新版本,以便在项目的分支之间创建关系。因此,使用您的分支结构并在FeatureBFeature A+B之间进行毫无根据的合并,在解决冲突时必须非常小心 - 如果您只是选择目标版本,目标分支上的任何FeatureA更改都将被FeatureB覆盖!

我应该补充一点,我还没有一直这样做;我也遇到过类似的情况,但当我意识到我需要详细解决每一个冲突时,我就放弃了。我们的产品很大,所以不值得我们花时间和冒险。

于 2012-04-10T14:54:49.033 回答