2012-07-13 78 views
2

我試圖將我的項目移植到另一個平臺,並且我發現這個新平臺和我開始的平臺之間存在一些差異。我已經看到了autotools軟件包並配置了可以幫助解決這個問題的腳本,但是我想知道爲每個新平臺設置一個單獨的分支是多麼的可行。爲每個平臺維護一個單獨的分支

我看到的唯一問題是如何在目標平臺上進行開發,然後將更改合併到其他分支中而無需獲取與平臺相關的更改。如果有辦法做到這一點,在我看來,它會更清潔。

有沒有人可以推薦/勸阻這種方法?

回答

0

分支以確定目標平臺的兼容性是可行的。只要確保將與目標平臺無關的更改專門分離到另一個分支中即可。

4

我肯定會阻止這種方法。

如果您在無法合併的分支中保留相同的代碼,您只是要求麻煩。如果忘記對某個平臺分支應用更改,那麼記住哪些分支已經應用了哪些更改以及發生噩夢會非常令人難以置信。

您沒有提及該語言,而是使用該語言中提供的功能來分隔平臺之間的代碼差異,但使用一個分支。例如,在C++中,您應該首先使用基於文件的分離。例如,如果您有適用於Mac,Linux和Windows平臺的聲音代碼,請創建一個sound_mac.cpp,sound_windows.cpp和sound_linux.cpp文件,每個文件都包含相同的類和方法,但包含非常不同的平臺特定實現。顯然,您只需將相應的文件添加到特定平臺上的IDE中即可。因此,您的Xcode項目獲取sound_mac.cpp文件,而您的Visual Studio項目使用sound_windows.cpp文件。引用這些類和方法的文件將使用#ifdef來確定要包含哪些頭。

對於安裝程序腳本等東西,您將使用類似的方法。 Mac上的安裝程序可能與Windows上的安裝程序不同,但兩者的文件都將位於該分支中。您在Mac上的構建腳本將僅使用特定於Mac的安裝程序文件,並忽略Windows特定的文件。

將事物保留在一個分支中,只是忽略不適用於當前平臺的東西,可以讓您在主題分支和主人之間來回合併,讓您的生活更加理智。

+0

如果我沒有合併平臺分支怎麼辦?我必須處理影響平臺之間差異的變化,做我所建議的只會改變我不得不處理的地方。 – markw 2012-07-13 15:58:26

+0

如果您在影響所有平臺的平臺分支上進行更改,則必須將該更改合併到所有平臺分支。你可以做你想做的事情,但你必須確保你有一個分支用於公共代碼,然後平臺特定的分支只包含特定於平臺的添加。您只能從常用代碼合併到特定於平臺的分支中,而不能從其他方向合併。它可以做到,但我認爲維護一個可以在分支機構之間自由合併的代碼庫是一個更好的計劃。 – wadesworld 2012-07-13 16:08:00

+0

考慮接受此答案,或者如果您覺得此答案無法解決問題,請創建另一個答案。如果你不接受答案,人們不會被激勵來幫助。 – wadesworld 2012-07-17 17:57:37

相關問題