這似乎是一個放大問題。存儲庫通常包含一個項目。一個項目的多個部分可能共享一個公用事業模塊,但對於小型項目而言,規模還不足以將公用事業模塊作爲自己的實體分離出去。但是,一旦實用程序模塊變得「大」,或者需要將需要分離的多個獨立實體分離出來,它就需要成爲自己的(版本化)模塊。
我的方法將是使用單獨的存儲庫,取決於涉及多少代碼。我不確定你添加的任務是什麼意思,儘管它是一個重要的重構。我要做的第一件事就是將共享資源合併到一個獨立的存儲庫中,並將這些共享資源的版本合併爲每個平臺版本中的(特定於版本)依賴項。從單個共享資源版本中分離出每個平臺上的開發。無論如何,對共享項目的每一次改變都需要對每個平臺進行測試,現在你的分界線已經很清晰瞭然後,您可以一次將每個項目設置爲自己的存儲庫。
如果您希望在多個平臺上擁有項目的「共享版本」,則需要一個「項目」,它是構建代碼的根目錄。您也可以考慮對該代碼使用共享存儲庫,但將共享代碼的發佈與該項目的發佈相結合。如果你的代碼已經達到這種複雜程度,你可能想要的是另一個存儲庫,只是用於存放你的構建代碼的「元項目」。除非你有一組瘋狂的大型項目可供使用,否則多個項目的構建可能都駐留在一個存儲庫中,從而允許它們共享通用代碼。同樣的問題再次出現,但是規模較小,一個存儲庫就可以工作。請注意,所有這些都假定了某種程度的自動化測試:)
我對多模塊項目的使用經驗來自使用perl和java。在perl中,使用來自CPAN的許多獨立共享模塊是常態。在java中,可以使用Apache Ivy或Maven來處理模塊化依賴關係。我在一個具有公司頂級元項目的環境中使用Maven,併爲每個產品(依賴於公司元項目)分別開發項目。每個項目都可以自由地做它所需要的。從一個項目升級的代碼在兩個或更多項目之間共享將成爲其自己的項目。一個特別大的項目最終分成幾個項目,都是從它自己的「元項目」繼承而來。處理這種層次依賴是Maven和Ivy所要做的。我們使用Jenkins/Hudson作爲集成服務器,每天晚上自動檢查跨項目構建(假設編寫測試時沒有人推卸責任......)。一旦我們需要更改整個公司的網站。沒問題,在公司元項目中更改過一次,並在每個項目的新版本中自動提取!
在這個_「多平臺項目」_中使用不同的編程語言_,如C,Java等? – yorkw
當然,Java for Android,Objective-C for iOS還有更多。我的意思是額外的任務,例如 –