Perforce 如何跟踪CL';s使用脚本跨多个流进行分支

Perforce 如何跟踪CL';s使用脚本跨多个流进行分支,perforce,perforce-integrate,perforce-stream,perforce-branch-spec,Perforce,Perforce Integrate,Perforce Stream,Perforce Branch Spec,我正在尝试创建一个脚本(如果可能的话),它可以从perforce获取一个特定的CL,并列出它已集成到的流或分支,以及该集成的CL,可能还有一些其他细节(如签入用户或文件历史记录) 我已经看过一些P4文档了,还没有找到任何东西。。。所以我想知道是否有人在这方面有经验 我的最终目标是创建一个网站(我以前有一家公司),它可以很好地显示这一点,但我希望首先启动并运行脚本 示例:我在脚本中输入CL12345,然后我得到一个列表,其中包含更改所在的每个流以及集成到该分支中的更改所在的CL 我知道修订图可以做

我正在尝试创建一个脚本(如果可能的话),它可以从perforce获取一个特定的CL,并列出它已集成到的流或分支,以及该集成的CL,可能还有一些其他细节(如签入用户或文件历史记录)

我已经看过一些P4文档了,还没有找到任何东西。。。所以我想知道是否有人在这方面有经验

我的最终目标是创建一个网站(我以前有一家公司),它可以很好地显示这一点,但我希望首先启动并运行脚本

示例:我在脚本中输入CL12345,然后我得到一个列表,其中包含更改所在的每个流以及集成到该分支中的更改所在的CL

我知道修订图可以做到这一点,但我想要的东西可以被不懂技术的人使用


谢谢

您希望脚本基于的命令是
p4 filelog
。在特定修订版上运行
filelog
,可以告诉您它是从哪些修订版集成到哪些修订版中的:

C:\Perforce\test>p4 filelog @=117
//stream/main/mob/nextproject/custom/configuration
... #2 change 117 integrate on 2019/02/22 by Samwise@Samwise-dvcs-1509687817 (text) 'tada'
... ... merge from //stream/main/mob/project/configuration#2
您可以递归地执行此操作:

C:\Perforce\test>p4 filelog //stream/main/mob/project/configuration#=2
//stream/main/mob/project/configuration
... #2 change 116 edit on 2019/02/22 by Samwise@Samwise-dvcs-1509687817 (text) 'foo'
... ... merge into //stream/main/mob/nextproject/custom/configuration#2

修订图在单个文件上执行此操作,这非常简单。在变更列表的基础上做这件事有点棘手,除非你做出一些简化的假设——变更列表有可能是部分集成的(也就是说,没有整合所有的修订),但是如果你只是假设这永远不会发生,然后,您可以构建一组修订图,并通过通用变更列表将它们合并在一起。

谢谢您的回复。你建议如何利用部分积分的机会来做这件事?那太复杂了,我真诚地建议不要尝试。(在上下文中,我在Perforce工作时编写了修订图和服务器端集成逻辑。)但是,如果您想尝试一下,可以从undoc
integ-C
命令开始,作为确定历史集成是否“完成”的一种方法。然后准备好发现和处理一堆边缘案例:谢谢你的信息!您如何建议删除所有不需要的数据?例如,我想输入上面的命令,但只需执行“我在主线中显示的此更改尚未集成到X、Y和Z。它可以在CL高于5的B上找到”的简短回答是“编写脚本”。)我不认为我可以在注释空间中对其进行伪编码,但正如答案中所示,您希望使用
p4 filelog
为您感兴趣的修订版构建一个集成关系图。从这里,找出“这个节点的下游是什么”是非常简单的图形遍历,生成所需的输出只是一个排序和格式化的问题。