2013-02-26 90 views
1

有可能使用Git子模塊檢出多個存儲庫作爲子模塊到各自的路徑,例如:的Git:結賬子模塊文件到一個目錄

% git submodule add [email protected]/repo1.git ./here/is/1 
% git submodule add [email protected]/repo2.git ./here/is/2 

但是,如果我需要結帳的repo1repo2兩個內容是什麼成單一路徑,./here/is/3

基本上我有一個指標狗屎噸的子模塊回購協議,我需要所有的被檢出到一個非常嚴格的目錄層次結構上,當用戶執行客戶端的git clone --recursive ...

我想要的所有子模塊的內容被檢出到./somepath。可以做到嗎?

我考慮過的一件事是使用符號鏈接,但感覺不對。

編輯:

我想要的1和上述2內容被放置在客戶機上的同一目標目錄。我可以通過讓用戶在克隆後手動運行腳本來完成此操作(it is not possible to have git track a single file),但似乎應該有一種更簡潔的方法來執行此操作 - 爲每個子模塊手動創建符號鏈接需要很多工作,而且看起來像子模塊抽象應該能夠處理這個問題。

也許我的問題是僞裝?

回答

1

一種方法是創建另一個母公司回購,與子模塊直接在它宣稱:

newParentRepo/ 
    1/ 
    2/ 
    3/ 
    ... 

該父回購可能在./somepath被克隆--recursive,和子模塊將直接下./somepath(在它們各自的根目錄1/2/,...)中。

您需要將第一個父回購記錄的子模塊的SHA1同步到第二個父回購庫中,以便所述第二個回購庫記錄子模塊SHA1的右列表。

+0

「在他們各自的根目錄」部分是一個問題。我需要將子模塊中的所有垃圾在'git clone'後移動(或鏈接)到客戶端的任意位置。澄清我的問題以反映這一點。 – g33kz0r 2013-02-26 15:52:52

+0

@ g33kz0r我確認一個子模塊總是被克隆在自己的目錄中,而不是在另一個子模塊的目錄中。每個子模塊*必須*在他們自己的目錄中。任何其他組織都是*部署*問題(複製/符號鏈接),但它與git無關。 – VonC 2013-02-26 15:57:32

+0

好的。看起來我必須創建符號鏈接*先驗*,因爲Git沒有後克隆鉤子。 – g33kz0r 2013-02-26 16:00:05