2012-02-22 44 views
1

我目前有一個大的(30K提交)SVN存儲庫,我正在轉換爲git。我們的代碼庫目前有一個共同的(核心)代碼集,以及兩個獨立的基礎(Java和.NET)。這使得我們可以共享通用代碼,並且在將構建推送給僅支持兩種語言之一的客戶時使用不同的語言。爲git遷移規劃存儲庫佈局

SVN存儲庫目前大量使用svn:externals在結賬時使用通用代碼以及語言特定的代碼來生成特定的佈局。

一個精簡的版本庫佈局的版本如下:

Core 
+ 
+-->classes 
+-->public_html 
    +>admin 
    +>web 
     +>images 
     +>javascript 
     +>styles 

Java 
+ 
+-->public_html 
    +>web 
     +>includes 
     +>code 


.NET 
+ 
+-->public_html 
    +>web 
     +>includes 
     +>code 

目前,當我在SVN從主幹結帳,我會在磁盤上的佈局,但是如果我籤一個子文件夾(Java或.NET),SVN:外部組件會給我以下佈局:

Java/.NET 
+>classes 
+>public_html 
    +>admin 
    +>web 
    +>code 
    +>javascript 
    +>images 
    +>includes 
    +>styles 

這也會讓我該文件夾中編輯代碼,做一個籤將致力於在資源庫中的正確位置。

我的問題是,這是否將是在Git中實現的,使用的子模塊或其他方法,或者如果我們需要重新思考我們的整個佈局以及如何實現我們想要的東西,當談到做簽出一個分支來創建一個構建。如果我們可以用子模塊來做到這一點,我應該遵循標準的子模塊教程,還是應該更深入一些,我應該看看?

謝謝!

回答

1

你不會得到具有子模塊的確切目錄結構,因爲每個子目錄都將位於其父目錄內的自己的目錄中。
也就是說,你會得到

Java 
+ 
+-->public_html 
*-->Core 
     + 
     +-->public_html 

(而不是一個混合「public_html」)

我仍然會推薦子模塊(你可以在他們做出修改,直接,如「True nature of submodules」解釋) 。
但是保持在git submodules are quite different from svn:externals

一旦你已經簽出了Java回購(在它的核心回購的引用),我會符號鏈接(可在Unix或Windows)重新創建正確的目錄結構。