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

时间:2011-06-17 14:29:00

标签: perforce

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

5 个答案:

答案 0 :(得分:40)

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

<强>更新

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

有关-F选项的详细信息,请参阅http://www.perforce.com/blog/130826/fun-formatting

答案 1 :(得分:33)

user114245给出了最佳答案,但仅限于评论。我正在添加一个答案,让它更具可见性,并提高一点。

对于更改12345,这是仅使用p4命令

获得的最接近的值
p4 files @=12345

仅提供此输出

//depot/file1#3 - delete change 3 (text)
//depot/file2#3 - edit change 3 (text)
//depot/file5#1 - add change 3 (text)

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

p4 files @=12345 | sed s/#.*//

获得所需的结果

//depot/file1
//depot/file2
//depot/file5

迈克的currently accepted answer就是这个

p4 describe 12345

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

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

Doug's answer进行了改进,使用grep和awk过滤掉噪音,只是保留文件更改,但命令很长

p4 describe -s 12345 | grep '^\.\.\.' | awk '{print $2}'

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

答案 2 :(得分:7)

迈克奥康纳的回答也帮助了我。

至于只是改变一个文件列表,难道不是这么简单吗?

p4 describe -s {change number} | grep '^\.\.\.' | awk '{print $2}'

这就是我将要使用的内容。

答案 3 :(得分:4)

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

来自official documentation: &#34;列出在待处理的更改列表中打开的文件。&#34;

答案 4 :(得分:2)

p4改变-o

最后有文件列表。