gpt4 book ai didi

tfs - 在 TFS2008 中重新设置分支的父级

转载 作者:行者123 更新时间:2023-12-01 18:58:02 24 4
gpt4 key购买 nike

假设我在 TFS 中有分支 A,从中获取分支 B。在 B 上进行了一些更改集,然后从 B 中获取了分支 C,并在分支 C 上进行了更多更改

A ------------------------------
|
B ----1--2------------------
|
C ----3-----4---

现在假设我们想要从 C 合并到 A,但绕过 B。TFS 不允许这样做 - 我必须进行无基础合并,这可能很容易出错。真的,我想让 C “重新设置父级”(如果这是正确的术语),因此它是 A 的子级,而不是 B。换句话说,我希望最终得到以下分支结构。 (C' 可以是原始的 C 分支,也可以是 C 本来应有的新分支)。

A ------------------------------
| |
B | ----1--2------------------
|
C' |-------1--2----3-----4---

现在 C' 可以正确合并到 A 中,而无需进入 B。

我的问题是,是否有任何自动化工具/脚本可以设置创建 C' 分支所需的挂起更改,因为手动执行此操作会花费我们很长时间?

最佳答案

在 TFS 中重新设置分支父级很困难。您可以通过无基础合并有效地为其提供额外的父级,但是:

  • 如您所知,无基础的合并非常乏味且容易出错
  • 除了 Destroy 之外,没有命令或 API 可以删除与“真实”父级的合并关系
  • 您将无法通过 VS 2005/2008 合并向导在新方向上执行合并

您似乎要求 - 我同意这是最好的解决方案 - 是一个名为 C' 的全新分支,它恰好具有与今天的 C 相同的内容。这是实现这一目标的快速方法:

  1. 使用普通的“分支”对话框创建新分支。如果一定要和C同名也没关系,先把C重命名为C_old就可以了。您需要决定是否适合从 A 的最新版本或某个旧版本进行分支。(如果有帮助,您可以在“属性”对话框中查看 B 的分支版本。)
  2. 从磁盘中删除新的 C 目录。
  3. 在命令提示符下导航至 C_old 目录,然后运行tfpt scorch -diff -deletes。这将确保 C_old 是最新的并且不包含任何无关文件(例如构建工件)。
  4. 复制 C_old -> C。
  5. 导航到 C,然后运行 ​​tfpt online -adds -deletes -diffs 。 -r。这将根据需要挂起添加、编辑和删除操作,以便服务器记录 A [作为分支] 和 C [作为在磁盘上表示的] 之间的增量。
  6. 签到

此方法的唯一缺点是您不会在历史记录中看到更改 3 和 4。当然,它们仍然位于 C_old 下,但像 Annotate 这样的工具不会知道这一点——它们会看到这些更改在您创建 C' 的日期一次性发生,没有单独的注释/工作项/等等

关于tfs - 在 TFS2008 中重新设置分支的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com