如何找到要复制的更改列表?

时间:2012-05-09 00:33:07

标签: perforce

我希望能够在'p4 copy'命令上复制的所有更改列表上执行'p4 describe'。怎么办呢?

我可以这样做:

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

查找每个文件的更改列表,并在最后一个分支点截断列表或将操作集成到to-branch(如果有)。但这可能需要很长时间。还有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

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

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

我实际上并没有将此命令与p4 copy一起使用,因此结果可能略有不同。如果您正在进行特别花哨的集成(挑选修订)Perforce可能会显示需要集成的更改列表,即使它已经集成了。

答案 1 :(得分:0)

我认为最简单的方法是在最后的CL中创建一个标签和标签from-branch / ...,它从from-branch复制到to-branch。然后找出未复制的CL列表就像这样简单:

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

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

答案 2 :(得分:0)

脚本可能是正确的方法。我使用perl,python或ruby API来提高它的效率和维护。

基本概要是:

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

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