我正在尋找一種方法來管理一些在編譯時需要不同模塊的超級計算集羣上運行的一些研究代碼。使用git來管理不同體系結構的機器的代碼
例如: Server1使用英特爾編譯器和MKL庫。 Server2在blas和lapack庫中使用gcc編譯器。
這些差異會改變一些頭文件,並在MKL_INT
的地方替換爲int
,但最終代碼通常保持不變,並且應該得到相同的結果(在數值噪聲範圍內)。
這是一個活躍的代碼庫,我經常更換零碎。目前我有github上的項目,從Server1創建了一個主分支,然後是兩個名爲Server1的新分支Server32 & Server2;修改每個分支中的代碼,以便按預期方式進行編譯和運行,並向上遊推送更改。
作爲git的新手,我在這裏遇到了一堵牆。我能夠使用這個模型來處理一般的代碼(比如在一個工作分支上)並將這些改變合併到兩個服務器分支上嗎?如果是這樣,主分支基本上是無用的嗎?有沒有更好的方法去處理這種情況?
我寧願建議使用預處理器宏來模塊化代碼,以便正確的頭文件和數據類型名稱被拾取。配置文件或環境變量可以與Makefile一起使用,並可以指示它是哪種環境。雖然你可以使用git來實現這個功能,但是工作流程對於你想要實現的功能並不是很有效。你會花費大量的時間來回合併解決衝突。 – Tuxdude 2013-03-26 02:12:18
這是一個非常好的主意,我沒有考慮過。如果你稍微擴展一下,我會接受它 - 謝謝。 – Geodesic 2013-03-26 02:22:49