2013-08-27 59 views
0

我在其中有人已經開發使用Perforce公司的倉庫了一些代碼,並取得了,至今尚未得到遏制一些改動源代碼一個有趣的問題。而不是過不過原來的檢查代碼,他們希望創建一個單獨的「工作空間」,它是當前工作空間的克隆,並且文件仍然同步,但新創建的文件。可以使用單獨維護的現有工作區的克隆創建另一個工作區?

我知道這是不完全Perforce公司應如何使用,但它僅僅是一個問題,我必須看到,如果它甚至有可能或者有更好的辦法,以減輕未來的這種情況。這似乎應該是可能的,因爲這就是爲什麼你有不同的客戶,每個客戶都有自己的「本地」副本。在同一臺機器上不是兩個「本地」副本?

回答

0

Perforce中,工作空間(客戶端)本身只會創建用戶的本地副本和服務器上的副本之間的映射。所以,如果您的文件從//depot/projectA來了,你的客戶就會有地圖,如:

//depot/projectA/... //workstation/... 

在你有實質性的變化,並要檢查他們的新代碼的情況,你有幾個選項。最常見的做法是,分支原始文件然後檢入修改後的版本。如果你確切地知道當文件被簽出(如標籤或變更表#),您可以通過分支當前projectA做到這一點很容易地進入projectB

p4 integrate //depot/projectA/[email protected]<change# or label> //depot/projectB/... 

這基本上會創建projectB作爲新項目,但包含來自projectA的所有資源。

現在,要工作projectB,您要麼必須向現有客戶端添加新映射,要麼必須爲該計算機創建第二個客戶端。在回答你的問題時,在機器上安裝另一個客戶端來源代碼的不同副本甚至不同的項目是完全合理的。但是,就Perforce而言,它相當於該機器上的第二個用戶在存儲庫的相同(或不同)部分工作。

所以,對於這一點,讓我們假設你選擇創建一個新的客戶端。這樣做,但在硬盤上使用不同的根位置和地圖projectB,而不是projectA(假定客戶端名稱爲workstation2

//depot/projectB/... //workstation2/... 

請記住,你需要小心使用正確的客戶端在使用perforce時可以用多種方法完成,包括設置環境變量(如果使用shell)或者更改p4v中的「工作站」

現在,對於最後一部分,移動您的更改從檢出版本projectA轉換爲projectB。由於上面的integrate命令將副本原始結賬時間,您現在需要複製文件或擱置並取消擱置它們。

只要你在同一臺機器上這樣做,副本很簡單,而且你要遵循以下基本步驟:

  1. 確保您檢索的projectB最新副本(在workstation2p4 sync ...
  2. 複製從原來的位置被修改的文件到workstation2目錄
  3. 使用p4 reconcile ...命令檢查出的編輯已經被修改的文件
  4. 使用p4 commit ...workstation2

檢查修改的文件到projectB庫現在,你已經安全地在修改後的文件簽入一個新的項目,你可能會想恢復原項目中的任何變化,從而該目錄不會處於混淆狀態。爲此,請切換到舊的工作區並使用p4 revert ...

如果您不想保留與舊代碼的連接,將會爲您節省幾個步驟(基本上可以創建新客戶端,然後複製這些文件然後p4 add ...這些文件,但由於您知道文件,保持歷史可能是值得的。

+0

謝謝,這有助於噸!真棒回答! – Layke

相關問題