2013-06-04 96 views
0

我正在開發一個「通用」make設置,以便在處理我的項目時使用。該設置由一個主Makefile和一個文件'module.mk'組成,該文件應該位於相對於主Makefile的子目錄中。主Makfile從指定的目錄中包含幾個module.mk。我開始使用git開發這個版本控制。在一個git倉庫中維護源代碼和測試代碼

並行開發Makefile和module.mk我想開發一個測試用例,用於測試和說明目的。相比

./Makefile 
./dir1/module.mk 
./dir2/module.mk 

裏面加一些dir1的其他文件和DIR2

的文件DIR1/module.mk和DIR2/module.mk可能包括一些具體的修改:理想情況下,測試案例將有一個這樣的結構到「源代碼」版本。他們也會有點不同。

我的問題是:

什麼是最佳的混帳的工作流程,以維持使安裝(Makefile文件和module.mk)的在開發和測試案例的代碼?

它可以使用一個單一的git回購(可能有分支)?

回答

1

我端到了使用分支,如@Dherik和@spuder兩個建議。爲了解決測試代碼駐留在git repo的單獨目錄中的問題,我在測試supdir中創建了大部分爲include源代碼的文件Makefile和module.mk。

尤其是回購看起來像

./Makefile 
./module.mk 
test/Makefile 
test/dir1/module.mk 
test/dir2/module.mk 

與目錄test只存在於「測試」分支和文件Makefile並在‘測試’module.mk的主要包括Makefilemodule.mk從庫的根。

感謝您的意見!

1

我認爲分支是答案,如果我承認正確。爲什麼?

如果「特定修改」很少,我明白可能是「源代碼」版本和「測試」版本之間的許多共同代碼。在這種情況下,您有時需要在兩個版本中更正/更新相同的代碼,並且將用作「熱補丁」分支,您將在「源代碼」和「測試」分支中進行合併。

更新

1 - 創建一個從主(你已經有這個文件)testing_code分支,如:

git branch -b testing_code master 

2 - 當你需要做一些修正的通用代碼,您可以創建一個 「hotfix_whatever」 分支,從testing_code或大師,如:

git branch -b hotfix_whatever master 

3 - 執行校正hotfix_wha tever並在master和testing_code中合併。

合併在testing_code:

git checkout testing_code 
git merge hotfix_whatever 

,並在主合併:

git checkout master 
git merge hotfix_whatever 

4 - 刪除合併後的分支:

git branch -d hotfix_whatever 

有了這樣的工作週期,你可以保持2個分支同步並更新而沒有問題。每次你需要修改時,打開一個新的分支,進行修改,並在master和testing_code中合併。

+0

謝謝,但你能提供一些關於你的解決方案的更多細節嗎?如果我將Makefile和module.mk保存在master分支中,應如何爲測試代碼創建分支以及如何使用您提到的「修補程序」分支? –

+0

謝謝。我理解這一部分。我仍然不知道如何做的是回購的佈局。此時,我在回購的根目錄中有Makefile和module.mk。測試代碼至少需要在單獨的目錄中至少有兩個module.mk副本,這些目錄是爲了測試而自定義的。理想情況是,如果我對module.mk的源進行一些通用更改,則可以輕鬆地將它與子部分中的自定義副本「合併」。 –

+0

其中一種可能性是從module.mk創建一個修補程序,以便在每次更改時在自定義副本中應用。 如果您更改了原始的module.mk,您可以執行diff並將差異存儲在文件中,以在定製副本中應用爲補丁:'git diff module.mk >> modified_module.patch'。我無法回答的是如何以自動的方式做到這一點,因爲在不同的文件夾中有不同的文件。但是,通過修補程序,您可以手動應用。 – Dherik

0

Git分支非常便宜。

爲模塊1和模塊2的每個排列創建一個開發分支。如果需要,您可以輕鬆地將分支合併到路上。

考慮使用許多不同分支的這個項目。

https://github.com/adaptivecomputing/torque

+0

非常感謝。看到我對Dherik的評論回答如上。你能提供一些關於你的解決方案的更多細節嗎? –