2009-09-08 60 views
7

問題很簡單。我已經使用git cvsimport將cvs repo導入到本地git存儲庫的遠程分支中。然後,我希望將這個存儲庫:分支,標記和全部同步到雲中的git存儲庫(github/gitorious)。要做到這一點,我沒有訪問rsync或直接複製存儲庫,我必須使用git push。如何通過按一個鏡像將一個git遠程鏡像到另一個

如何關於鏡像我的本地存儲庫以便其他人可以訪問完整的_cvsimport_d歷史記錄?

具體地說:
我導入和使用cvsimport跟蹤存儲庫:

git cvsimport -i -v -C cdt-make-core -d :pserver:[email protected]:/cvsroot/tools -r cvs org.eclipse.cdt/all/org.eclipse.cdt.make.core

上述進口org.eclipse.cdt.make.core成在GIT回購cdt-遠程CVS使核心。

然後我可以主推CVS分支的頭github上:

git push github cvs/master:refs/heads/cvs/HEAD

(我指定的遠程明確,所以如果它不存在,它創建的路徑。)

是有什麼辦法可以同步所有的分支:cvs/* => cvs/*在遠程?
有什麼辦法可以同步所有的標籤嗎?

回答

3

我的發現是,如果您使用下面的第二個合理的解決方案,您首先需要執行- 鏡像,因爲它會清除您嘗試推送的那些CVS /分支。所以完整的公式是:

git push --mirror -v github 
git push --force github cvs/master:refs/heads/cvs/HEAD 
for x in `git branch -r | grep '^..cvs/[a-zA-Z0-9_-]*$' | sed -e 's/^..//'` ; do 
    git push -v github $x:refs/heads/$x 
    git config branch.$x.remote github 
    git config branch.$x.merge refs/heads/$x 
done 
5

我認爲你正在尋找的--mirror選項推:

git push --mirror github 

這將推動所有裁判(分支和標籤),包括非快進更新。我用它來創建我的本地存儲庫的備份。

man page描述這樣的:

相反命名每個裁判推的,指定$GIT_DIR/refs/下的所有參考文獻(包括但不限於refs/heads/refs/remotes/,和refs/tags/)被鏡像到遠程存儲庫。新創建的本地參考將被推送到遠端,本地更新的參考將在遠端強制更新,刪除的參考將從遠端移除。如果設置了配置選項remote.<remote>.mirror,則這是默認值。

[OT:我用CDT在我的日常工作,我喜歡它]

+0

謝謝。不幸的是,這似乎並沒有做到我想要的。它看起來像這樣使雲中的存儲庫看起來像我的,這意味着github回購有一個'CVS'遠程,但沒有可見的CVS分支。 我想要的是在github上將remotes/cvs/*的全部內容複製到cvs/*。 – 2009-09-14 16:31:49

+0

啊,我現在明白了。對不起,我死了。 – 2009-09-14 17:57:55

1

已經嘗試,我不相信有任何內置的是我希望做支撐。

但是似乎有有兩種合理的解決辦法:

  • 不要指定-r到cvsimport。
    導入的分支將直接存在於存儲庫中,並且- 鏡像可以用作Pat的建議。
  • 編寫一個shell腳本來一次推送* cvs/**遙控器(這很簡單)。
    使用--mirror使標籤正確地同步

我本來想保持cvsimport d分支分離的命名空間。然而,第一個選項是保持cvsimport存儲庫完全分離(並且只能從中克隆)。然後,我可以繼續跟蹤CVS,而不會污染跟蹤git回購。

相關問題