2014-07-11 43 views
1

一系列相關的項目我是新來的git,和我建立了一個數字運算應用程序我參與開發的存儲庫。如何設置上的git

的基本思路是,最終有一些文件夾結構類似

|-- Code for application A 
    |-- header 
    |-- src 
    |-- objdir 

我希望能夠做的是支持在Windows,Linux和Mac版本的應用程序。核心代碼做同樣的事情跨平臺的,但現在我不得不重新組織項目是:

Application A 
|-- Windows 
    |-- Code for application A 
     |-- header 
     |-- src 
     |-- objdir 
    |-- Windows specific code 
|-- Mac 
    |-- Code for application A 
     |-- header 
     |-- src 
     |-- objdir 
    |-- Mac specific code 
|-- Linux 
    |-- Code for application A 
     |-- header 
     |-- src 
     |-- objdir 
    |-- Linux specific code 

我設定的工作流程是這樣的,每個人都使用不同的操作系統,所以往往我們會在Windows文件夾中說出材料並嘗試使用「應用程序A代碼」文件夾中的內容,但至少最初希望獨立於其他文件夾中的內容。如果由於與Windows版本混淆而導致的「應用程序代碼A」的更改似乎可行,那麼我們會將該解決方案移植到其他文件夾(例如,「Linux /應用程序A的代碼」)。

我不知道什麼是對去使用Git設置這一切在單一存儲庫中最自然的方式。

我想保持獨立的存儲庫,每個版本將得到笨拙,這將是很好的保持某種指示,這些都是

我們以前用的顛覆相同的應用程序A的只是不同版本濫用分支機構來讓這個工作(讓我們爲每個版本有不同的工作目錄),但現在決定遷移到git,將不同版本視爲分支似乎是錯誤的。

我讀過這個子模塊是一個壞主意,我想知道人們是否有類似這樣的經驗/想法?

回答

1

的Git是分支與合併比SVN這樣更好(更容易,速度更快),它是由git-flow建議使用分支機構對每一個新功能的工作那麼當該功能完成合並(或放棄分支,如果它不能正常工作或abandonned)

因此,假設您代碼應用程序A是跨平臺的,並且可以在平臺之間可以共享:

創建爲一個混帳回購協議應用程序A項目,

代碼應用程序A創建第二個混帳回購協議,並將其作爲子模塊(或子樹)在主倉庫中的每個OS項目,以避免重複。

然後工作時,讓我們說,一個Windows的測試,你可以創建一個測試分支:在主應用程序A回購(如雙贏的測試重構),這將指向代碼在Windows文件夾中爲應用程序A子模塊以測試自己的分支。

這樣,如果測試不起作用,您可以擺脫測試分支,一切都將恢復正常。或者如果它按照Windows的預期工作,並且需要與其他平臺共享,則可以合併測試分支和開發一個(在兩個回購中)以將新功能包括在主線中,並共享它到任何參考文件夾的文件夾

Application A (main git repo in its 'testFOO' branch) 
|-- Windows 
    |-- Code for application A (submodule in its own 'testFOO' branch) 
     |-- header 
     |-- src 
     |-- objdir 
    |-- Windows specific code 
|-- Mac 
    |-- Code for application A (same submodule in its own 'develop' branch) 
     |-- header 
     |-- src 
     |-- objdir 
    |-- Mac specific code 
|-- Linux 
    |-- Code for application A (same submodule in its own 'develop' branch) 
    |-- header 
    |-- src 
    |-- objdir 
    |-- Linux specific code