【问题标题】:How to merge new files into another branch in TFS?如何将新文件合并到 TFS 中的另一个分支?
【发布时间】:2011-12-10 14:50:24
【问题描述】:

好的,在 TFS 中,我们有一个主 trunk 分支和另一个分支,我们称之为 secondary。我们已经在 trunk 中创建了一个新文件,但是当尝试合并该特定文件时,它没有让我们选择合并到 secondary 分支。我们假设这是因为辅助文件中不存在类似文件。

这是问题的原因吗?如果是,我们如何将新文件从 trunk 获取到 secondary

在这里,我们正在合并一个确实存在于 secondary 中的文件。如您所见,下拉列表列出了我们的所有三个分支(secondary 实际上是中间分支):

现在,当我尝试合并在 secondary 分支后在 trunk 中创建的文件时,secondary 不再列为目标分支。

【问题讨论】:

  • 你能给我们举一个你运行的 tf merge 命令的例子吗?是这样的吗? : tf 合并 $/trunk $/secondary /recursive
  • 新创建的文件已经签入了吗?
  • 抱歉,我们不是 TFS 专家。我们通过 VS2010 与 TFS 交互。通过 Team Explorer,我们在主干中找到了要合并的文件,然后右键单击它并选择“Branching and Merging > Merge...”。所以,我不确定转换成什么命令。顺便说一句,我们正在尝试仅合并这个特定文件。 @PVitt:是的,新文件已检入主干。

标签: tfs


【解决方案1】:

尝试合并该特定文件

要了解 TFS,请记住更改单元是 更改集,而签入和合并的是更改集(而不是文件)。

我们假设这是因为辅助文件中不存在类似文件

这是正确的——在目标分支所在的版本(变更集编号),这个文件根本不存在,所以没有什么可以合并到。

一般来说,在合并源对话框中选择特定的文件不会有任何好处 - 正如它所说,它要求你选择源和目标分支。在其根目录中指定分支,选择Selected changesets only,TFS 将向您显示源中存在但尚未合并到目标的变更集列表。如果您只想要添加此新文件的那个,您可以在该列表中选择它。

【讨论】:

  • 因此,当您在 Team Explorer 中选择特定文件并右键单击选择“Branching and Merging > Merge...”时,如果您受限于变更集,它究竟试图合并什么?跨度>
  • 我相信它会为您提供包含该文件的所有变更集。但我只从层次结构的头部合并,所以这只是一个猜测。
【解决方案2】:

我认为这应该可以通过 VS GUI 实现,如下所示:

选择添加新文件的文件夹,然后将(整个文件夹)合并到您的 辅助 分支。
现在该文件夹中所有更改的文件都显示在您的待处理列表 + 您的新文件中。
撤消所有其他文件并继续仅签入一个重要的文件。

有人可能会争辩说,这种对 TFS 的限制实际上是有道理的:

  • 如果您对文件进行了其他更改,特此保护您不会破坏您的 二级 分支。
  • 如果您没有对任何其他文件进行其他更改,合并您的文件仍然有意义,因为合并将只包含您的新文件。

【讨论】:

  • 我还没有尝试过,但对我来说,希望能够仅合并一个特定文件确实很有意义。并非总是如此,但肯定存在某些情况,由开发人员决定哪些合并可能会或可能不会破坏构建。
  • 如果你指责 TFS 的“保护主义”,我绝对同意你的观点,但这就是它的工作原理。
  • 我相信这背后的原因是,如果您只是“合并”有问题的文件,它不在任何其他分支中,但是当您合并其父级(文件夹/分支),也就是说,内容更改是到另一个分支中的文件夹。
  • -1 虽然这个答案有效,但不足以解释为什么会发生这种情况
  • 感谢您的解决方法。我还可以提出合并操作需要大量关注和专注的论点,我喜欢完全控制并成为决定什么合并和不合并的人。我个人认为 TFS 是脑死亡,而 Visual Source Safe 是微软无法开发合适软件的活生生的证明。
【解决方案3】:

“现在,当我尝试合并在二级分支后在主干中创建的文件时,二级不再列为目标分支。”

为此,在源代码管理资源管理器中右键单击文件并选择分支而不是合并。然后会弹出一个对话框来指定目标。

通常,您最好合并主干和辅助而不是其中的一部分(更容易保持分支随着时间的推移保持一致)。

【讨论】:

  • 这似乎对我有用。按照接受的答案中的建议合并父目录没有帮助。
【解决方案4】:

我认为原因只是您无法合并尚未分支的内容。请注意,如果您合并包含新文件的文件夹,则表示该操作是 [merge, branch],表示您正在分支新文件作为父文件夹合并的结果。据我所知,选择文件>合并和分支>分支,而不是合并似乎是解决方案。我看到的唯一区别是历史记录然后列出它有一个[分支]而不是[合并,分支]。在 secondary 分支中创建文件的分支后,您可以在分支之间合并对文件的更改。

【讨论】:

    【解决方案5】:

    您可以尝试使用TF Merge command

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-22
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多