實習就要結束了,收獲之一就是學會了使用Perforce!
Perforce SCM System是一款構建於可伸縮客戶/服務器結構之上的軟件配置管理工具。僅僅應用
TCP/IP,開發人員就能夠通過多種Perforce客戶端(幾種平台的GUI、WEB、或命令行)訪問
Perforce服務器。Perforce能夠被快速和容易地部署,即使對大型或分布式的站點,也只要求最小限
度的管理。Perforce可以使用在50多個操作系統中,它包括版本控制、工作空間管理、變更處理和
一個強大的分支模型。這里介紹的P4V是perforce的一種可以跨平台使用的客戶端。
和其他的版本控制工具一樣,perforce也是基於CS架構,有一個中央服務器,其他客戶端通過網絡來連接,如下圖:
1.服務器連接
填寫正確的服務器名、端口、用戶名及工作空間設置。
2.客戶端主要工作區
上圖所示的是Perforce的主界面,大部分的操作都是在該界面下完成的。該界面分為三個區域:
區域1:顯示Deport以及Workspace中的內容,稱為目錄區。
區域2:列出文件的一些操作屬性,稱為操作區。
區域3:給出所執行操作的提示信息,稱為信息區。
目錄區
目錄區由Depot目錄區和Workspace目錄區組成。
--->Depot目錄區
顯示了服務器上可見目錄結構(用戶權限設置不同,可見目錄也不同),這也與Workspace View映
射文件路徑有關系,可以指定顯示文件路徑。在這里,可以執行的操作包括: check out, submit,
Get Latest Revision, Revert Files等操作。
--->Workspace目錄區
顯示了與服務器上文件有映射關系的,本地工作空間的目錄結構,這與Workspace View也有關系。
操作同上。
操作區
操作區中的內容主要由如下的幾種工作區組成。
---> Pending changelists 工作區
這里顯示當前用戶正在修改的文件和其他開發者正在修改的文件。
當然,你只需要關心你自己的project即可。當你執行:Mark for Add,check out等操作時,這些信息
就會顯示在changlist列表中顯示,並由不同的圖標顯示其狀態。如果你修改完成后,執行submit就
可提交更新文件;但也可以執行revert放棄所作的修改。
--->Submitted changelists 工作區
顯示了近期所有項目組成員對項目所做的操作。
從中可以獲得如:changlist號、修改時間、修改文件的內容、修改原因及修改人等信息。
---> Workspace工作區
在該工作區中可顯示所有連接在服務器上的客戶端工作空間。
在此工作區內可以執行創建、編輯修改、刪除用戶工作空間等操作。(前提是有執行的權限。)
--->History工作區
查看指定文件的變更歷史信息。
---> Labels工作區
查看目前所有的label號。
在此工作區中可完成label的創建,內容的修改等。(前提是有執行此操作的權限。)
--->Branchs工作區
查看目前所有的Branch號。
在此工作區中完成Branch的創建,修改、刪除等。(前提是有執行此操作的權限。)
除了以上說明的幾種工作區,還有Files、Jobs等工作區。包括上述的
六種在內,這幾個工作區窗口可以通過界面上,如下圖所示的選項卡相互切換:
信息區
由一個窗口(Pane windows)組成。
Pane windows
這是一個非常有用的窗口,稱之為消息窗口區,最底下的那個窗口就是。你的任何操作的信息都會
出現在這里,包括success, warning, error等信息。特別是執行某個操作失敗后,這里的信息是至關
重要的。一般情況下,都可以根據這里的信息來處理一些意外情況或者是不規范操作。
3. Perforce的日常操作
3.1添加(Add)文件夾及文件
--->在Workspace中選定要添加的文件夾/文件上右擊,選擇“Mark for Add”,添加文件。
將添加文件行為顯示在pending changelists工作區中。在工作區上增加好文件夾和文件后,圖標上有
個紅色的加號標志,表明此時增加的文件夾和文件還僅僅存在客戶端的工作區中,還沒有提交到服
務器上的倉庫中。所以,右鍵點擊需要提交的文件夾或文件,選擇Submit,提交完畢后,文件此時
才真正提交到服務器上的倉庫中。
--->提交(Submit)添加文件/文件夾
在Submit的過程中,需要寫下該變更的描述,這點很重要!描述信息的詳細,將大大的方便對文件
的查詢和跟蹤。且在描述的開頭用英文說明此次操作行為的類型。如用Add表示添加;Modify表示
修改;Build表示編譯等等。
點擊Submit后,即可看到文件前面的紅色加號已經去掉了,並且在Reversion欄中已經顯示出該文件
的版本號。此時,文件的右下角有個綠色的標識,表示該文件當前顯示的是最新版本。
3.2文件修改
如果需要對文件進行修改,首先將需要修改的文件Check Out出來到本機,才可以進行修改。
--->右鍵點擊需要修改的文件,選擇Check Out命令。
此時被Check Out出來的文件左上方有個紅色鈎標志,表明該文件已經成功的被您Check Out出來了
。如果是文件的右上方有個藍色鈎標志,說明該文件已經被別人Check Out出來了。由於Perforce支
持並行操作,所以您仍可以將別人已經Check Out的文件再次Check Out到您本機進行修改。
--->雙擊打開已經Check Out出來的文件,對其進行修改。
修改完畢后,右鍵點擊該文件,選擇Submit,寫下變更列表的描述。
之后,選擇save,然后發code review:
在同行審閱approve后,再提交。
ps:Collaborator是建立在CodeCollaborator基礎之上的代碼最全面審查工具,Collaborator能為開發團隊輕松、有效地完成代碼審查,
這使得實際中代碼審查應用更大,自然能獲得更好的代碼。關鍵因素是用戶體驗,它允許團隊其它成員為作者輕松、協作地提供反饋,跟蹤每一條評論並采取應對措施。
3. 點擊Submit,文件提交到服務器,增加了一個新版本。
在這里需要提醒大家的是,如果將某個文件Check Out出來后,並沒有做任何修改,這時請不要做
Submit操作,而是點擊右鍵選擇Revert If Unchanged,這樣提交后就不會增加該文件的版本數了,
否則服務器將會為一個沒有做任何修改的文件增加一個版本。
建議在每次修改后思考:為什么要做這些修改?如果所作的修改是沒有意義的,那么,建議不要將
這個文件提交(submit),而是Revert你所做的修改。
3.3 合並文件
合並操作主要用來解決並行開發過程中變更產生的沖突。
例如,當有多人需要對同一個文件同時執行Check Out操作時,在Submit該文件時,Perforce可能會
報錯。現舉例如下:有A、B兩人需要同時對CallKeep.cpp文件執行Check Out操作。
此時可以看到文件CallKeep.cpp的左上角和右上角分別有鈎,這說明該文件正在被至少兩個人執行
Check Out操作。由於Perforce支持並行操作,所以A和B在執行Check Out時不會發生沖突,但
Submit該文件時就可能報錯了。第一個執行Submit操作的人不會出現問題,例如A可以正常提交,
但如果B修改的內容和A修改的相沖突,則B執行Submit時報錯,並且會提示服務器上已經有最新的
版本了(即A剛剛提交的版本)
此時B獲得最新版本后再提交,仍報錯。
且在文件上打個問號,說明服務器不知道該怎么辦,因為B需要提交的版本內容和A的相沖突,需要
B給予解決。
這時,選中該文件,右鍵點擊,選擇Resolve操作。
Perforce提供了三種自動解決方案,分別是“Accept Merged”、“Accept Yours”和“Accept Theirs”。當
然,你也可以查看和別人沖突的地方在哪里,進行手動解決沖突。點擊Run Merge Tool,顯示如下
圖所示界面。
區域1:顯示的是A提交版本中的內容,即目前服務器上的最新版本。
區域2:顯示的是A和B同時Check out文件CallKeep.cpp時,當時服務器上最新版本內容,也就是A、
B修改的基礎版本。
區域3:顯示的是B自己修改的文件內容。
區域4:顯示了三個版本所有沖突的地方,B可以在此基礎上對文件做修改,給出解決方案。
選擇紅線框中的按鈕來決定所保留的代碼。解決完沖突后再Submit即可。
3.4查詢文件歷史版本
1. 如果想要查詢某個文件的任何一個歷史版本,右鍵點擊這個文件,選擇Get Revision。
2. 寫下需要查看的歷史版本號,然后點擊Get Revision。
此時Perforce為您取出任何一個你想要的歷史版本。
3.5比較兩個文件的區別
比較操作主要是用來查看某個文件到底做了哪些修改:從中你可以看出添加了什么,刪除了什么等
等。
---> 比較兩個不同文件或一個文件不同版本之間的區別。右鍵點擊需要比較的文件,選擇Diff
Files命令。
---> 按照下圖所示,設置需要比較的文件名稱或文件的版本等。
--->點擊Diff就可以看到如下圖所示的所有不同處,包括增加、刪減或修改的操作。
在這里需要注意的是:Perforce暫時不支持多個文件的比較。
3.6 同步服務器上文件
如果您在服務器上找到自己所需要的文件,並希望把這些文件同步到本機,這時就需要首先選擇好
工作區Workspace,然后右鍵點擊需要下載的文件夾,選中Get Lastest Revision命令,就可以完成
文件夾的同步操作了。
有時候同步不到最新的版本,可以選擇force操作:
3.7 獲取Label標識版本文件
提取出標記特定label下的文件。
--->在工具欄上找到的標識,在右上方的Labels工作區中找到所需的label號。
---> 獲取指定label下特定文件。 右鍵選中指定label,在菜單中選擇“Get Revision...”。
---> 在彈出的如下對話框中,選擇需要簽出的文件。
---> 點擊“Add”按鈕,選擇添加標記該label的文件。
整理使用perforce過程中的幾個問題:
question1:How to delete a workspace in Perforce (using p4v)?
I'm new to Perforce and have created a few workspaces as exercises for getting familiar with it. Now I would like to delete some of the workspaces. I just want to get rid of the workspaces so that they do not appear on the drop-down in the workspaces view (do not want to do anything with actual depot files).
Googling up an answer yields the suggestion to "make the workspace active" (I guess that means select it in the workspace dropdown?) and then delete it from the "edit" menu. Unfortunately, the delete option is grayed-out when I try this.
Anyone know how to do this, or do I just have to live with junk workspaces? I've physically deleted one of them from the disk, and it still appears in the workspace drop down, and I can't even synchronise it with the depot now, so I guess that's not how to do it.
solution:
In P4V click View > Workspaces
If the workspace to be deleted is not visible in the list you may have to uncheck the box Show only workspaces available for use on this computer
Right-click the workspace to be deleted and choose Edit Workspace 'My_workspace'
On the Advanced tab uncheck the box Locked: only the owner can edit workspace settings > then click OK
Now back on the Workspaces tab of Perforce right-click the workspace to be deleted and chooseDelete Workspace 'My_workspace'
P4V should remove the item from the drop-down list when clicking on it.
There is a case where a previously deleted workspace remains in the drop-down list, and P4V displays the following error:
P4V Workspace Switch Error. This workspace cannot be used on this computer either because the host field does not match your computer name or the workspace root cannot be used on this computer.
If this error occurs, the workspace(possibly on another host) may have only been unloaded. Click the P4V Workspaces Recycle bin
In the resulting Unloaded Workspaces window right-click the offending workspace and chooseDelete Workspace 'My_workspace'. P4V should now remove the workspace item from the drop-down list.