2012-05-20 106 views
1

我有一個現有的SVN存儲庫,它有一個「common」目錄,其中包含由不同項目共享的模塊。 佈局是這樣的:將git存儲庫克隆到subversion版本庫的子目錄中

http://example.com/svn/trunk/common/module_1 
http://example.com/svn/trunk/common/module_2 
... 
http://example.com/svn/trunk/common/module_X 

由於種種原因,我管理的一些其他項目使用Git。 我需要在SVN和git項目中使用module_X,所以我打算使用git-svn。 然而,發生以下問題:

[email protected]:/repos$ git svn clone http://example.com/svn/trunk/common/module_X destination 

此命令將在/回購/目的地創建一個新的Git倉庫,並獲取module_X內容到它。 我需要做到的是把module_X/回購/目的/ module_X,不取它的內容直接爲/回購/目的/

什麼似乎在一開始的選擇是使用

[email protected]:/repos$ git svn clone =--ignore-paths='^((?!module_X).*)$' http://example.com/svn/trunk/common/ destination 

這將使一個倉庫中/回購/目的地和子目錄/回購/目的/ module_X。 但問題是,我的SVN存儲庫有一個相當大的修訂歷史和整體的路徑opreations是相當緩慢的。

有沒有人有想法如何做到這一點?

回答

0

簡短的回答:你不能,或者你不想要。 Git並沒有被設計爲託管多個項目,因此克隆了獨立的子目錄,一個git ==一個項目。即使你可以做到這一點(看看How do I clone a subdirectory only of a Git repository?非常有見地的答案),你將失去保持最新動態的所有能力。

有可能是一個黑客雖然你可以嘗試,是要告訴混帳svn的爲您創造有每個模塊的一個分支,在這裏你有一個很好的例子:Cloning a Non-Standard Svn Repository with Git-Svn,東西應該看起來像:

% git svn clone https://svn.myrepos.com/myproject myproject --ignore-paths='^((?!common).*)$' --trunk=trunk/ --branches=trunk/common/* --prefix=svn/ 

(未測試)