2010-11-10 48 views
1

Best practice for managing project variants in Git?上有類似的問題,但上下文不同,我懷疑答案可能也是如此。最好的git和Xcode結構,用於演變相同產品的變體

我有一個Cocoa產品「第一」與Xcode管理和使用git版本。 「第一」仍在不斷演變,目前正處於第三個版本。

然後,一位顧客前來詢問First的一個變體,稱爲Second。從第一到第二的變化會影響許多文件,但不是全部。這些更改會影響源代碼,但也會影響資源(圖形元素,筆尖文件,屬性列表...)。

現在這兩種產品都是活的並且共享許多通用文件。但是,一些更改(如錯誤修復)可能適用於這兩種產品。可能的是,兩種產品都可能會添加一項新功能。

什麼是管理這種情況下最好的辦法:

  • 在Xcode
  • 用git

我有兩個想法,這是相互排斥的:

理念1:git分支將「第一」分爲「第二」,並將任何適用的更改從一個項目應用到另一個項目。這導致兩個完全獨立的Xcode目錄和項目。

想法2:將一個名爲「Second」的目標添加到Xcode項目中。現在,相同的Xcode項目有兩個目標,用於開發和構建這兩種產品。但是這使得難以管理git中的First和Second版本(版本沒有理由被同步)。

想法2使並行開發過程非常簡單。代碼始終保持同步。可以通過編譯時變量和單個源文件或通過不同的源文件處理差異。它使版本管理更加模糊。

想法1可能更乾淨,但是,那麼管理兩個項目之間通用的最佳做法是什麼?你可以在兩個git分支之間進行「部分合並」嗎?基於什麼?或者必須手動處理?

將某些常見部分封裝並提取到模塊或庫中可能是可能的,但並非總是如此。例如,我不認爲這是可能的通用文檔圖標。同時重構「第一」,以便所有常見項目都能以可構建的方式提取出來,這是我寧願一次做一件大事。

我意識到可能沒有完美的解決方案。我正在尋找想法和建議。 作爲一個相對最近的git採用者,我也意識到這可能是一個RTFM問題。然後,簡單地指向我的調頻到R.

非常感謝。

回答

0

我的首選是idea2。我目前這樣做是爲了編寫主應用程序的插件,然後編寫集羣所有節點上的客戶端應用程序。插件和客戶端共享相同代碼的90%,所以這使得它非常容易維護和調試發生了什麼的地方/方式。