如何列出perforce更改列表更改的所有文件

cof*_*fee 30 perforce

我有一个特定的更改列表,从命令行我想列出属于该更改列表的所有文件.我该怎么做呢?

Mik*_*nor 42

这是describe命令.要描述特定的更改列表,您需要p4 describe <changelist number>.

更新:

如果只需要文件名,可以使用带有-F选项的files命令覆盖输出格式:p4 -Ztag -F "%depotFile%" files @=<changelist>

有关-F选项的更多信息,请参见http://www.perforce.com/blog/130826/fun-formatting.

  • 我不得不在引号中加上@ = &lt;changelist&gt;。如果1234是CL编号,则为“ @ = 1234” (2认同)

Day*_*Day 35

user114245给出了最佳答案,但仅限于评论.我正在添加作为答案,以提高它的可见性,并提高一点.

对于更改12345,这是仅使用p4命令可以获得的最接近的值

p4 files @=12345
Run Code Online (Sandbox Code Playgroud)

这只给出了这个输出

//depot/file1#3 - delete change 3 (text)
//depot/file2#3 - edit change 3 (text)
//depot/file5#1 - add change 3 (text)
Run Code Online (Sandbox Code Playgroud)

如果要删除有关每个文件的无关信息,则需要通过命令行上的更多工具处理该输出.假设一个标准的unixy环境,你可以sed像这样使用一个命令

p4 files @=12345 | sed s/#.*//
Run Code Online (Sandbox Code Playgroud)

获得理想的结果

//depot/file1
//depot/file2
//depot/file5
Run Code Online (Sandbox Code Playgroud)

目前接受的答案由Mike是这样的

p4 describe 12345
Run Code Online (Sandbox Code Playgroud)

它在输出中提供了所有这些额外的细节

Change 12345 by day@client1 on 2013/06/21 00:25:28

    Some example changes

Affected files ...

... //depot/file1#3 delete
... //depot/file2#3 edit
... //depot/file5#1 add

Differences ...

==== //depot/file2#3 (text) ====

1c1
< This is file 2
---
> This is file 2 - edited
Run Code Online (Sandbox Code Playgroud)

这是通过提高对道格的答案,它使用grep和awk来滤除噪声和刚刚离开的文件改变,但该命令是相当长

p4 describe -s 12345 | grep '^\.\.\.' | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

我认为这里给出的解决方案更整洁.

  • 这应该是公认的答案。 (2认同)

小智 7

Mike O'Connor的回答也帮助了我.

至于只是改变了一个文件列表,它不能像这样简单吗?

p4 describe -s {change number} | grep '^\.\.\.' | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

那就是我要用的东西.

  • 您可以将正则表达式模式移动到您的 awk 脚本中:`awk '/^\.\.\./{print $2}'` (2认同)

Ric*_*ard 5

如果您的更改列表仍处于挂起状态,您可以运行p4 openedp4 opened -c <changeListNumber>特定(未提交的)更改列表编号。

来自官方文档:“列出在待定更改列表中打开的文件。”