查找集成了 CL 的所有分支

Find all branches where CL was integrated

所以我需要解决的问题是:

  1. 我在 //branch1 提交了 CL 100
  2. 此 CL 后来在 CL123 中从 //branch1 集成到 //branch2。
  3. 从 //branch2 集成 CL123 后来集成到 //branch3 和 //task/branch4。
  4. 后来它从 //task/branch4 集成到大约 35 个其他分支,使用其他分支。

假设我有大约 100 个可以集成 CL 的分支,但我的任务是找到所有集成初始 CL100 的分支。

怎么做?我的队友一直在手动执行此操作(找到所有分支需要数小时,有时甚至数天)。

我只是想知道是否有一些工具可以列出所有集成初始 CL 的分支?如果有 none 编写脚本的初始起点是什么?

我尝试使用

p4 -ztag changes -i //depot/...@123,@123 

但它只显示了 CL 集成历史记录,并不是我要找的。

图形选项是使用修订图工具。在 Revision Graph 中打开文件,select 修订,使用 "Highlight Descendants" 选项,然后过滤到 "Show only highlighted files".

如果您想自己在代码中实现它,基本上只是 运行 p4 filelog 递归,然后对结果结构进行简单的图形搜索。不幸的是,P4V 不是开源的,但 IIRC Revision Graph 的底层数据结构仍然与旧的 Half-Life mod 相同,它以类似的方式显示分支历史;这将是起点(我提前向任何阅读此代码的人道歉——这实际上是我的第一个 C++ 编码项目,所以它有点粗糙):https://swarm.workshop.perforce.com/files/guest/sam_stafford/p4hl/src/dlls/FileLogCache.h