[SCM]源码管理 - perforce高级操作

以下的操作基于P4V。

 

1 p4 refresh all

某些情况下某些修改不能实时地在p4v中跟新,此时可以使用p4v refresh all。

还可以在任意的item上右键中找到refresh相关的操作。例如本地目录下删除或增加文件,在p4v中不能的及时反映,这个时候可以在 workspace中的目录中右键中点击refresh相关选项。当然其他的changelist,client,depot等也都有相应的 refreash。

操作: view->refreash all

 

2 p4 rollback

用来将已经提交的修改撤销,或者恢复到某个之前的changelist。

如果是没有提交的修改(即在本地的pending changelist),使用revert unchanged files或revert files。

操作:例如如下将//depot/projectB恢复到version(changelist)14,在//depot/projectB上右键然后点击rollback,在rollback的dialog上设置changelist为14,然后直接submit。

 

3 p4 shelve

shelve是p4 2009后的新功能。需要p4 server和p4 client同时支持。

shelve操作用来临时存储正在进行的工作到perforce server,但是没有submit一个changelist。
shelve的用处:
当你在一些文件上同时进行多个开发任务(例如必须先处理优先级更高的工作,或必须在提交前到其他的平台测试)。
或者用来在提交前developers间的code review。

 

p4 shelve 相当于将你的修改零时的挂载到p4 server的架子上。
p4 unshelve相当于将修改从p4 server的架子上覆盖到本地的workspace,且加到pending changelist。

 

操作:

1)BBB用户要shelve文件//depot/projectB/file2.txt, 在文件//depot/projectB/file2.txt上右键然后点击shelve。如下图:

2) BBB用户shelve文件//depot/projectB/file2.txt后如下图:

3) 使用另一个用户AAA登录后如下,AAA不一定使用与BBB相同的workspace(client)。如下图:

4) 在AAA用户下切换到BBB用户下查看BBB用户的shelve,此时可以使用diff against 或者直接打开文件来review BBB用户的修改,相当于是code review。

或者使用unshelve来将BBB用户的修改应用到AAA用户的workspace,且加到AAA的pending changelist中。

5)在AAA用户登录后切换到BBB用户时,使用unshelve过程操作如下:

6)可以看到AAA用户对BBB的shelve进行unshelve后,BBB的修改被加到AAA的default changelist中,如下:

 

 

4 p4 lock/unlock

对本地pending changelist中的文件进行lock,从而达到当自己checkout修改某些文件时不允许其他的人修改相同的文件,直到自己unlock或submit后别人才可以修改。

我们知道p4是基于merge机制的源码管理,p4 lock命令相当于以前的基于lock机制的源码管理工具。

操作:在某个pending changelist或某些被checkout的文件上右键中选择lock或unlock。

 

5 p4 rename/move

直接修改perforce server上某个文件的名字或将文件移动目录。相当于自己使用delete+add+submit的操作。

 

6 查看指定的changelist,操作为ctrl+G


 

完!

posted @ 2011-08-09 10:56  iTech  阅读(12327)  评论(0编辑  收藏  举报