如何查看搁置的P4更改?
我们的一个团队成员(位于不同地区)已经将P4的变化与变更清单1234搁置。
现在,如果我想查看哪些文件被修改snf有什么变化,我该怎么做?
我应该用什么P4命令来查看我们团队成员所做的更改?
p4 describe -S 1234
应该诀窍,请参阅关于描述的文档 。
要查看文件内容,您可以将文件取消保存到工作区中(假设您的同事正在处理同一项目的工作区)。
创build一个新的(空) p4 change
列表p4 change
(结果在例如2345),然后使用p4 unshelve
( p4 unshelve
)获取修改后的文件到您的工作区:
p4 unshelve -s 1234 -c 2345
如果你不想在你的工作区中修改文件,你可以使用p4 revert -c 2345
。
使用graphics用户界面,转到“待处理”,然后删除除用户以外的所有filter,您将在其中放置其他开发者的标识。 从那里你应该可以看到她的变更名单,包括已经搁置的文件。 右键单击Shelved Files图标并selectUnshelve。 您将必须有一个工作空间处于活动状态,其中包含您要搁置的文件。
使用UI客户端,按Ctrl + G。 出现对话窗口。 在combobox中select更改列表并input更改列表的编号。
我们假设更改列表123456是有问题的搁置更改列表。 作为前面提到的答案,列出文件的方式与更改列表关联的方式是通过p4 describe -s <changelist>
命令。 像这样:
$ p4 describe -s 123456 Change 123456 by john.doe@JohnsBranch on 2013/10/24 15:38:10 *pending* [Shelving my changes for Jane.] Fix memory corruption caused by uninitialized pointer. Affected files ... ... //depot/branches/JohnsBranch/kernel/vm/pageutils.c#1 edit
一旦你知道了文件,有两种方法可以在没有相应工作区的情况下对文件进行区分。 方法#1是使用p4 print
:
$ p4 print -q //depot/branches/JohnsBranch/kernel/vm/pageutils.c#1 > /tmp/old $ p4 print -q //depot/branches/JohnsBranch/kernel/vm/pageutils.c@=123456 > /tmp/new $ diff /tmp/old /tmp/new # Or use kdiff3, tkdiff, etc. ... <diff output here>
另一种方法是使用p4 diff2
:
$ p4 diff2 //depot/branches/JohnsBranch/kernel/vm/pageutils.c#1 //depot/branches/JohnsBranch/kernel/vm/pageutils.c@=123456 ... <diff output here based on Perforce server's diff algorithm>
这两种方法都可以很容易地结合到select的脚本语言中。
jhwist的解决scheme是好的,如果你想看到文件的差异。
如果您只想看到搁置的文件,请使用p4 describe -sS 1234
。
小写字母限制包含文件差异的输出。
如果您只想看到ChangeList 中的文件列表 (无论是搁置,挂起还是提交的CL),而没有额外的数据,grep的结果:
p4 describe -S 12345 | grep -oP '(?=//).*(?=#)'
在P4V UI中,select
Search - > Go To
然后select更改列表的types(在您的案例“待处理更改列表”中),input更改列表号并单击“确定”。