2011-01-26 131 views
4

我從切換到水銀Git和已經使用hg-fast-export成功。現在我有一個棘手的情況。我這是每個分支使用單獨的汞庫的一個項目,我想這些轉換爲與「適當的」樹枝單一git倉庫,讓我的汞的變更如果可能的話。轉換多個汞庫單的Git倉庫有多個分支

所以目前的結構是這樣的 - 每個文件夾是一個汞庫:

Project-v1.0 
Project-v2.0 
Project-v3.0 

我想叫「工程」,它包含3個分支,V1.0單一的git倉庫,V2落得.0和v3.0。

這可能嗎?

回答

2

當汞庫是從一個基站回購克隆,您可以使用hggit擴展其導出到一個混帳回購協議。說你的分支住在目錄B1 /,B2/B3和/,那麼所有你需要的是

cd b1; mkdir ../gb1 && git init --bare ../gb1 && hg push ../gb1; cd .. 
cd b2; mkdir ../gb1 && git init --bare ../gb2 && hg push ../gb2; cd .. 
cd b3; mkdir ../gb1 && git init --bare ../gb3 && hg push ../gb3; cd .. 
# now you have one git repo for each hg branch 

cd gb1 
git remote add gb2 ../gb2 
git remote add gb3 ../gb3 
git fetch --all 
# now you have all branches in the gb1 repo 
rm -r ../gb2 ../gb3 
# the other repos are now not used anymore 

如果不同的汞回購協議是無關的,你必須要使用的VonC提到的嫁接點解決方案。

1

這應該是可能的:

  • 創建來自三個水銀那些
  • 導入Project-v2.0歷史進入Project-v1.0 GIT中回購3個不同的GIT中回購(通過添加Project-v2.0作爲遠程和在一個「v2.0取它'分支:創建2個不同的根)
    並且,通過graft point,將兩個分支連接在一起(HEADv1.0分支變成S上的第一父提交v2.0分支的)。
  • 使用filter-branch使這些移植點永久(即不限於您的回購)

(重複的Project-v3.0,提取到的第一個到一個單獨的v3.0分支,嫁接到v2.0分支的HEAD,並過濾分支,使移植永久)

你有一個類似的情況(雖然它是關於「prepend一些歷史」,而不是「追加」)在SO問題「How to prepend the past to a git repository?」。