1

I want to be able to do a 'p4 describe' on all the changelists that will be copied upon a 'p4 copy' command. How can this be done?

I could do something like:

p4 copy -n from-branch/... to-branch/... | sed -e 's|.* ||' | xargs -n 1 p4 filelog

to find the list of changes per file and truncate the list at the point of the last branch or integrate action into to-branch (if there is one). But this could potentially take a long time. Is there a better way?

4

3 回答 3

1

试试p4 interchanges。我喜欢-land-f标志,它打印整个更改列表描述并列出更改的文件:

p4 interchanges -lf from-branch/... to-branch/...

不过,我实际上并没有将此命令与 一起使用p4 copy,因此结果可能会略有不同。如果你正在做特别花哨的集成(樱桃采摘修订),Perforce 可能会显示一个需要集成的更改列表,即使它已经被集成。

于 2012-05-09T14:13:46.577 回答
0

脚本可能是正确的方法。我会使用 perl、python 或 ruby​​ API 来使其更高效且更易于维护。

基本大纲是:

  • 运行p4 copy -n获取候选文件列表
  • 解析出正在复制的源修订。例如,每一行输出都有类似“branch/sync from //depot/foo.c#1,#3”的内容。对于该文件,您想知道如何创建修订版 1-3。
  • 运行p4 changes以获取影响每个文件的更改列表(例如p4 changes -l //depot/foo.c#1,#3

同样,使用 API 执行此操作会更有效,因为您可以对所有命令调用使用单个连接。

于 2012-05-09T14:53:58.237 回答
0

我认为最简单的做法是在从分支复制到分支的最后一个 CL 处创建标签和标签 from-branch/...。然后找出未复制的 CL 列表很简单:

p4 changes 'from-branch/...@>copied-up-to' # where copied-up-to is the name of the dynamic label

如果 from-branch 下的所有内容都标记在同一个 CL 中,我可以使用动态标签,其 Revision spec 将是从 from-branch 复制到 to-branch 的最后一个 CL。

于 2012-05-09T00:53:05.370 回答