2011-11-21 34 views
6

我們的小軟件商店最近從Subversion遷移到Git,因爲我們的程序員發現Git更好。遷移不是無痛的,我們遇到了子模塊功能的問題。我主要的抱怨是,一旦回購包含子模塊,你不能簡單地克隆它,並期望事情發揮作用。您必須執行額外的步驟才能初始化並下載子模塊。後續拉應該update the submodules automatically,所以沒關係。但是,當我添加一個新的子模塊時,按下提交和人員拉動,他們不會自動獲得新的子模塊,他們必須手動再次手動輸入git submodule update如何讓非程序員更容易使用Git子模塊?

這是愚蠢的,因爲人們不能簡單地用子模塊拉回購,並期望它建立。這種理解是否正確?程序員可以在收到新的提交之後簡單地編寫一個腳本或別名來更新子模塊,但對於我們的非程序員子模塊來說很痛苦。我想提出一個解決方案,無論使用哪個Git客戶端,回購總是在克隆/提取後正常工作。

我有什麼選擇?

+2

您可能希望對初始克隆使用'git clone --recursive'命令,這將處理您的部分問題。 –

+0

謝謝,我不知道'--recursive'。但是我們的非程序員使用GUI客戶端(當前是GitBox),這就是我尋找不同解決方案的原因。在GUI中爲子模塊提供一流的支持是完美的,但我不會屏住呼吸。 – zoul

+0

您確定要採用子模塊路線嗎?子模塊應該是獨立的模塊,所以如果沒有它們,事情就會崩潰,那麼它就不是真正的獨立模塊。 – bluesman

回答

-1

當今子模塊的支持要好得多,這個問題幾乎不存在。

  • GitBox獲得了良好的子模塊支持。

  • SourceTree by Atlassian是一個免費的Git客戶端,在1.3中增加了子模塊支持。在1.3.1的子模塊處理中有a small glitch,但除此之外,客戶端似乎涵蓋了我想要的所有子模塊用例 - 也就是說,它使子模塊對於非程序員來說幾乎是透明的。

  • Git Tower也似乎support submodules自1.4以來非常好。

+2

請注意,這兩種工具僅適用於Mac – Yogu

+2

而且它們都不是開源的。 – firegurafiku

0

如果您打算使用大量的子模塊,特別是要引用「通用庫」,我強烈建議使用git-slave。儘管如果用幾個小時的時間集中精力進行一些實驗,通過一系列場景,裸骨子模塊並不難完成。

我也強烈推薦一些CI服務器來爲你打造。它將抓住所有必要的子模塊。您可以通過可下載的zip文件製作所有的工件(您可以決定要使用哪些工件)。我使用TeamCity,這是暴露所有內容而不需要使用任何VCS的好方法。

+0

謝謝,我不知道Git Slave。我擔心它不適用於圖形化的Git客戶端,這對我們來說是必須的(並且還需要爲混合添加第三方解決方案的成本)。我想過一個CI服務器,我們最終可能會到達那裏,因爲它處理大量的用例。但是非程序員仍然需要使用GUI客戶端對repo進行一流的訪問,所以我需要解決這個問題。不幸的是,CLI + Git研討會不是一種選擇。 – zoul

+0

我們希望很快能夠看到一個明智的基於GUI的子視圖。 –