我有一个特定的更改列表,从命令行我想列出属于该更改列表的所有文件。我该怎么做?
答案 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 opened
或p4 opened -c <changeListNumber>
。
来自official documentation: &#34;列出在待处理的更改列表中打开的文件。&#34;
答案 4 :(得分:2)
p4改变-o
最后有文件列表。