天天看點

[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。

[SCM]源碼管理 - perforce進階操作

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。如下圖:

[SCM]源碼管理 - perforce進階操作

2) BBB使用者shelve檔案//depot/projectB/file2.txt後如下圖:

[SCM]源碼管理 - perforce進階操作

3) 使用另一個使用者AAA登入後如下,AAA不一定使用與BBB相同的workspace(client)。如下圖:

[SCM]源碼管理 - perforce進階操作

4) 在AAA使用者下切換到BBB使用者下檢視BBB使用者的shelve,此時可以使用diff against 或者直接打開檔案來review BBB使用者的修改,相當于是code review。

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

[SCM]源碼管理 - perforce進階操作

5)在AAA使用者登入後切換到BBB使用者時,使用unshelve過程操作如下:

[SCM]源碼管理 - perforce進階操作

6)可以看到AAA使用者對BBB的shelve進行unshelve後,BBB的修改被加到AAA的default changelist中,如下:

[SCM]源碼管理 - perforce進階操作

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

[SCM]源碼管理 - perforce進階操作

完!

作者:iTech

微信公衆号: cicdops

github:​​https://github.com/cicdops/cicdops​​