2011-01-28 42 views
1

我有這樣的項目結構:問題組織多個項目使用Git

root 
    | 
    +-- SHARE 
    +-- Project1 
    +-- Project2 
    +-- Project3 

所有項目中引用的項目份額。

因此,我在每個文件夾中創建了4個回購單。 然後我嘗試將SHARE作爲子模塊添加到Project1,但我沒有得到我想要的,因爲Git將所有源文件從共享複製到Project1 \ SHARE。我不希望子模塊SHARE將文件簽出到與Project1平行的文件夾SHARE中。

是否可以將SHARE作爲Project1的子模塊引用而不從SHARE複製源文件? 或者是否有更好的方式來告訴Project1的回購,它取決於回購SHARE?

我使用Windows7與VS2010和Git擴展。

回答

1

子模塊的要點是主存儲庫的版本決定了子模塊的版本。如果你不需要這個功能,你可能根本不需要混淆子模塊。

現在,如果需要此功能,那麼您的結構沒有意義,因爲不同的項目可能需要不同版本的SHARE。這就是爲什麼建議將SHARE複製到每個存儲庫中,所以它們不會衝突試圖獲取他們想要的SHARE版本。

+0

這個結構用於我們公司多年以來相對較大的代碼庫和許多項目。但到目前爲止,我們並沒有使用源代碼控制。我現在嘗試將這個結構調整到git倉庫。有許多開發人員將代碼放入SHARE中,並且在編譯項目時,我們始終擁有最新的源代碼。我們缺乏的是當我們發現一些錯誤時,恢復到舊代碼庫(備份除外)的功能。我明白你的觀點,如果這對git沒有意義,我將使用不帶子模塊的獨立回購。 – Michael 2011-01-28 13:15:54

0

如果所有的項目都可以參考SHARE相同SHA1,並會任何修改都好處,你會在SHARE做,那麼你應該申報所有4個目錄(3 Projects,1 SHARE)的根目錄中的子模塊,這將是一個父庫。

但這也意味着Project1本身不會有任何記錄它需要什麼確切版本的SHARE
所以你的結構只有在所有3 Projects緊密結合的情況下才有意義(你不能在另一個上工作而不需要另外兩個)。