嘗試追加「@all」到文件路徑。例如,這將產生一個單一版本回購對我來說:
python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \
//depot/services/master-pom/trunk/...
此命令導入的全部歷史:
python /usr/share/doc/git-core/contrib/fast-import/git-p4 clone --destination=master-pom \
//depot/services/master-pom/trunk/[email protected]
我使用的例子的git-p4的嘗試,但放棄了幾個原因,寫我自己的快速進口泵。這是一段時間了,所以一些問題現在可能已經被修復了:但是git-p4在大型修改表(比如最初創建分支)時遇到了問題(儘管使用客戶端規範可能有幫助,但是我沒有認爲我嘗試了它)和文件與「+ S」filetype修飾符(這是壞和邪惡,但我們曾經使用它)。而我的Python-fu不會讓我解決我遇到的問題。
編輯:因爲有人問它,在這裏。
https://github.com/araqnid/p4utils有幾個p4的東西,其中p4-git-xfer是p4-> git(單向)複製器。不過,它有很多問題,因爲它主要是個人的手工工具而不是真正的基礎設施。
入門:
p4-git-xfer clone -d $PWD/dictionary.git -n //depot/services/midoffice/dictionary/... \
trunk 'release/*' 'branch/*' \
trunk=master release/*=r* branch/*=dev/*
將克隆到裸 「dictionary.git」 那Perforce的路徑。基路徑之後的第一個參數是「分支規格」,它告訴複製器在底座下的哪個分支。後面的(帶有'='符號)是「鏡像規格」,它告訴複製器如何從導入的分支創建本地分支。分支規格會導致創建「refs/remotes/p4/trunk」,「refs/remotes/p4/release/1.0」等。鏡像規格強制「refs/heads/master」鏡像「refs/remotes/p4/trunk」,「refs/heads/r1.0」以鏡像「refs/remotes/p4/release/1.0」等。作爲一種讓我從被複制的特定分支中選擇要傳播到克隆的方法。
它會嘗試檢測分支是如何創建的,但這與Perforce無論如何都是有點猜測的。除此之外,它不會嘗試進行任何分支跟蹤:即使是整個分支合併也不會被這樣寫出來,對不起。
初始克隆後,從git副本內部運行p4-git-xfer fetch
將執行增量更新。高水位變更表取自git回購中的marks/p4
。這是一個快速導入加載的標記文件,因此如果您使用filter-branch重寫某些特殊的腳步,請注意,您也可能需要更新它。
這不是很漂亮,有一些中等到嚴重的問題;我主要是爲了我自己的方便使用它,將我自己從Perforce問題中分離出來,而不是將其作爲日常的關鍵基礎設施組件。這是單向的:我通常使用p4-am腳本來應用由git format-patch
創建的補丁。這本身只能居多,與一般的解析污穢,與最終的文件換行符的問題,二元變化等
您的p4導入腳本是公開的嗎?如果是這樣,你介意分享嗎? – joce 2009-05-03 21:07:41