我有一个特定的更改列表,从命令行我想列出属于该更改列表的所有文件。我该怎么做呢?
这是describe命令。要描述特定的更改列表,您需要p4 describe <changelist number>
。
更新:
如果只需要文件名,可以使用带-F选项的files命令覆盖输出格式:p4 -Ztag -F "%depotFile%" files @=<changelist>
有关-F选项的更多信息,请参见http://www.perforce.com/blog/130826/fun-formatting。
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}'
我认为这里给出的解决方案更整洁。
Mike O'Connor的回答也帮助了我。
至于只是改变了一个文件列表,它不能像这样简单吗?
p4 describe -s {change number} | grep '^\.\.\.' | awk '{print $2}'
那就是我要用的东西。
如果您的更改列表仍处于待处理状态,则可以针对特定(未提交)更改列表编号运行p4 opened
或p4 opened -c <changeListNumber>
。
来自official documentation:“列出在待定更改列表中打开的文件。”
p4改变-o
它最后有文件列表。