2017-06-01 51 views
1

我正在嘗試使用git-p4工具將perforce存儲庫遷移到Git,但正在與分支配置苦苦掙扎。請看下面的P4佈局:將多個分支從Perforce遷移到Git

Folder1/ 
-- SubFolder1/ 
-- SubFolder2/ 
Folder2/ 
file1.txt 
file2.txt 

在這裏,我需要SubFolder1和SubFolder2遷移作爲一個獨立的分支,同時保持文件夾2,文件1 &文件2在主分支。

我試圖在指定配置p4.branchList以下配置:

git config --add git-p4.branchList DEPOT_PATH/Folder1/SubFolder1:Branch1 
git config --add git-p4.branchList DEPOT_PATH/Folder1/SubFolder2:Branch2 
git config --add git-p4.branchList DEPOT_PATH/Folder1:master 

,但我得到這個錯誤,是不是非常有幫助:

p4 describe -s 521710 did not return 1 result: [{'generic': 33, 'code': 'error', 'data': "Operation 'user-describe' failed.\nChange 521705 description missing!\n", 'severity': 4}, {'p4ExitCode': 1}] 

漂亮知道我在做什麼錯誤,我甚至不確定當前的佈局遷移是否可以通過git-p4進行。任何幫助將不勝感激。

感謝

UPDATE

我忘了提,我試圖運行P4爲錯誤消息指出描述的命令,但我得到了另一個錯誤,指出「改變缺少描述」。

+0

你可以試試'p4描述521705' –

+0

嗨,道格拉斯,謝謝你的回覆。我更新了帖子 – Davita

+0

聽起來就像你的perforce倉庫中存在一些破壞 - 你不應該遺漏歷史記錄中存在的變更集的描述。 –

回答

1

說實話,我並不完全確定可以做你想做的事情。 假設每個分支位於完全獨立的目錄結構中,而不是在子目錄下,則執行分支檢測。

儘管如此,您不應該在該配置中使用軟件倉庫路徑。這些目錄對始終與導入過程中使用的原始軟件倉庫路徑相關。請注意,每對應該是integrate(或類似)操作的源目錄和目標目錄。也就是說,假設你有以下結構:

//depot/project/main 
//depot/project/branch1 
//depot/project/branch2 

而且該分支所使用的創作:

p4 integrate //depot/project/main //depot/project/branch1 
p4 integrate //depot/project/branch1 //depot/project/branch2 

然後,你需要配置如下分支導入使用git p4 clone //depot/project/[email protected]時:

git config --add git-p4.branchList main:branch1 
git config --add git-p4.branchList branch1:branch2 

因此,遵循您的具體示例,如果您使用以下co導入mmand:

git p4 clone --detect-branches //depot/path/[email protected] 

然後你只需要包括的/path/部分之後的路徑

假設倉庫路徑//depot/project_root和導入命令git p4 clone --detect-branches //depot/[email protected],你需要以下配置:

git config --add git-p4.branchList project_root:project_root/Folder1/SubFolder1 
git config --add git-p4.branchList project_root:project_root/Folder1/SubFolder2 

也就是說,兩個SubFolder1和SubFolder2從project_root整合。

+0

嗨@Vitor,謝謝你的回覆。我有點困惑,因爲沒有來源:目標對代表P4文件夾git分支地圖?如果是這樣,你爲什麼提到git分支名稱中的P4路徑?如果不是我錯過了什麼? :)無論如何,現在就試試這個。再次感謝:) – Davita

+0

他們是來源:在P4倉庫內的目的地對,從某種意義上說,如果你把p4集成到/ depot/project/path2中,你可以用'git p4 clone //克隆它// depot/project /[email protected]'並告訴git-p4,path2是path1的一個分支。 – Vitor

+0

我現在看到。我認爲映射代表P4分支路徑到git分支名稱。那麼這是否意味着我應該映射所有源 - >目標分支?我嘗試將其他幾個項目遷移到git,並且對於所有這些項目,我收到一條錯誤消息: fatal:歧義參數'refs/remotes/p4/dvt_bsg/rel/R2.4.2.78':未知版本或路徑不是在工作樹中。我看到你的其他答案,這個錯誤是與分支映射問題有關,我想我應該提供一個適當的映射,但我沒有得到如何確定什麼是正確的映射... – Davita