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

问题描述 投票:29回答:5

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

perforce
5个回答
42
投票

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

更新:

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

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


34
投票

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}'

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


7
投票

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

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

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

那就是我要用的东西。


4
投票

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

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


2
投票

p4改变-o

它最后有文件列表。

© www.soinside.com 2019 - 2024. All rights reserved.