【问题标题】:Should I avoid baseless merges in TFS?我应该避免在 TFS 中进行毫无根据的合并吗?
【发布时间】:2015-05-03 23:38:16
【问题描述】:

也许是一个简单的问题,但我很难找到答案。我经常在使用 TFS 作为源代码控制的客户端工作,他们完全避免使用 TFS 源代码控制的无基础合并功能

部分原因是过去它需要命令行工具来执行此操作,但可能更重要的是,当您现在在界面中执行此操作时,它会显示一个黄色感叹号警告符号,表明您确实在执行毫无根据的合并。

这种做法会吓跑他们,让他们完全避免。我一直在四处寻找,以确定无根据合并是否涉及任何特定风险,但我无法找到(或有关无根据合并如何在幕后工作的详细信息)

【问题讨论】:

  • 让我把这个问题转过来:你为什么建议他们使用毫无根据的合并?他们的分支结构是什么样的,这使得这对他们来说是一种常见的操作?
  • 嗯,这个客户使用从 Main 到 Dev 再到 Patches 的分支结构,其中经常发生多个补丁同时在开发中但尚未准备好合并回 Dev , 但有时可以很好地在各个补丁分支之间共享它们正在开发中。只是想我会为此使用毫无根据的合并。

标签: tfs branching-and-merging baseless-merge


【解决方案1】:

应尽可能避免无根据的合并。当您进行无根据的合并时,与合并不同,您忽略了任何一方的历史。事实上,您可以合并两个完全不相关的分支——这可能很危险。

关键是创建一个分支策略,让您不必使用该功能。

【讨论】:

  • 是的,我注意到当我尝试进行毫无根据的合并时,几乎所有(如果不仅仅是简单的)更改都会导致“合并冲突”并且应该手动解决,即使它只是一个包含所有更改的分支...如果您问我,这似乎是 Git 的又一次胜利...
  • “无基础合并”,即没有共同祖先(或“基础”)的两个文件的三向合并,意味着您无法识别文件的哪些区域是新的并且什么是常见的。所以它会在任何系统中产生冲突,无论是 Git 还是 TFVC。
  • "意味着您无法识别文件的哪些区域是新的,哪些是常见的。因此它会在任何系统中产生冲突,无论是 Git 还是 TFVC" 不完全正确。问题是它需要成为 TFSVC 中的父级,而 git 它实际上可以是任何祖先。
  • 仅供参考,对于像我一样对“两个文件的三向合并”感到困惑的任何人,它指的是用户 Alice 的代码、用户 Bob 的代码以及他们都进行更改的基本代码。因此,如果默认的 TFS 合并工具 diffmerge 无法确定基数,它将执行没有基数的合并,即无基数。
  • 当您必须进行功能隔离时,没有办法绕过它。功能切换要差得多。
猜你喜欢
  • 1970-01-01
  • 2017-12-24
  • 2019-03-23
  • 2012-10-14
  • 1970-01-01
  • 2018-11-18
  • 2011-03-07
  • 2018-06-16
  • 2012-04-22
相关资源
最近更新 更多