2013-05-07 50 views
3

我不太清楚正確的術語是用來做什麼的,所以請事先原諒我,如果我把可怕的事情搞砸了。使用git來維護一個共享的代碼庫

我目前在git中爲我在Mac應用程序商店中發佈的應用程序維護一個代碼庫。出於各種原因,我現在正在考慮發佈非MAS版本。

顯然,MAS和非MAS版本將共享95%的通用代碼庫。實際上,他們不會共享的唯一部分是收據檢查(MAS版本)和許可證密鑰+自動更新(非MAS版本)。

這使我想到了我的問題的要點 - 大概是這樣做的「正確」方法將是在git中維護兩個獨立的分支?如何輕鬆確保兩個分支保持同步,而不用擔心兩個版本之間的收據檢查和許可密鑰代碼出血? xcode項目管理怎麼樣?假設我將一個文件添加到MAS項目中,是否有一種簡單的方法可以讓它顯示在非MAS項目中?

如果需要澄清,請讓我知道。

在此先感謝。

回答

2

我不會使用不同的分支,您希望2.0版的MAS和2.0版的非MAS的功能儘可能相同。我只需要兩個目標,並在MAS目標的調試和發佈配置中定義MAC_APP_STORE = 1。 95%的代碼將成爲這兩個目標的成員,但許可證和自動更新代碼文件只會是非MAS目標的成員。常見代碼中會有幾位需要像這樣有條件地編譯:

#ifdef MAC_APP_STORE 
    ... 
#else 
    ... 
#endif 
+1

對於一系列有限的變化,根據我的回答,這可以比處理多個回購更好地工作。所以+1。 – VonC 2013-05-07 07:16:26

+0

@VonC我傾向於不同意。這將使用配置管理是解決方案的代碼。 – boutta 2013-05-07 09:05:27

+0

@GayleDDS謝謝你在盒子外面思考。雖然其他人指出它可能不適合每種情況,但這對我的使用情況來說絕對是完美的。 – 2013-05-08 05:13:18

1

如果你能在一個子目錄隔離不同的文件,那麼你可以考慮用submodule工作(見Pro Git book chapter on it

這樣:

  • 你只有一個分支維護對於包含95%通用代碼的父回購,您可以維護特定於子模塊回購中給定版本的文件的分支。
+0

子模塊與簡單符號鏈接有什麼好處? 我的意思是,一個倉庫爲所有共享代碼,併爲MAS和非MAS文件兩個獨立的存儲庫。 在本地文件系統中,更改符號鏈接(即'LN -s')指向MAS或取決於你想要的工作什麼項目非MAS存儲庫。 – 2013-05-07 14:24:12