【问题标题】:Is it possible to "create" (baseless) merge candidates within TFS?是否可以在 TFS 中“创建”(毫无根据的)合并候选者?
【发布时间】:2012-04-22 17:57:16
【问题描述】:

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

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

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

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

现在我想做从 "Feature B" 到 "Feature A+B”

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

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

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

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

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

如果可能,请提供一些提示,我目前正在尝试改变这一点,但我不确定当我们开发 2 个分离的项目时该怎么做,突然间,需要将它们放在一起。

【问题讨论】:

    标签: version-control tfs merge branch


    【解决方案1】:

    您对情况的评估是正确的,您需要在此处使用无根据的合并来建立 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 版本控制开发主管。

    【讨论】:

    • 有没有办法做到这一点而不实际进行合并?我只是想建立关系。实际上进行合并似乎非常冒险,因为我必须合并每个文件(数千个)并且两个分支都已完成工作。我只是想让开发人员更容易将工作从一个分支转移到下一个分支。这种限制令人沮丧。
    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢,我不知道 tfs 在毫无根据的合并后记住了关系! :)
    猜你喜欢
    • 2019-03-23
    • 2016-09-28
    • 2015-05-03
    • 2011-03-07
    • 2010-11-27
    • 2016-02-02
    • 2016-06-01
    • 2014-07-03
    • 2015-12-01
    相关资源
    最近更新 更多