2011-03-31 217 views
5

我目前在Github上有一個關於我想要合併到項目中的項目。將SVN回購作爲分支導入已有的Git回購

問題是,SVN項目本質上只是github上較大項目的一個文件夾,所以我不認爲我可以使用git-svn來做到這一點。

我假設我可以使用git svn來克隆該項目,但後來我不知道如何將svn項目移植到現有的git項目上。

想要的結果是將SVN歷史記錄到Git分支中(而不是將其移植到主分支上)。

能夠重新提交給svn並不是真的必要(如果有幫助的話)。

解決

我結束了使用just_doug的建議,但也有一些小的修改:

1:我以前從http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/的建議添加googlecode上作爲遠程裁判

2:我爲我想要的遠程分支創建一個新的分支

3:我用

混帳合併-s我們--no提交googlecode上的遠程

合併兩個

4:然後我用

的git讀樹 - prefix = folder1/folder2/ -u googlecode-remote

在合併歷史閱讀和重訂到所需的子文件夾

希望這可以幫助別人了類似的情況;)

回答

2

我以前沒有使用過它,但它聽起來好像要the subtree merge strategyThis article有更多關於如何使用它的細節。

基本上,您將SVN存儲庫添加爲遠程,然後使用git read-tree命令將其「移植」爲純粹git存儲庫的子目錄。根據你希望歷史顯示的方式,你可以執行git merge -s subtree將它合併到你的純git分支(保留git-svn提交),或者你可以按照第二個鏈接中的步驟添加--squash--no-commit標誌和將合併顯示爲pure-git分支中的單個提交。

說明書假定遙控器也是一個git回購。如果本地回購是使用git而不是git-svn創建的,那麼不知道它會發揮多好。這是一種混亂,但here are some scripts用於製作一箇中間存儲庫,只是在git中鏡像SVN回購。這樣,你可以創建一個svn倉庫的git-svn鏡像,並將其作爲遠程鏡像添加,上面的說明應該像描述的那樣工作。