我想知道你通常如何處理這種情況:版本控制:多版本地獄,文件同步
我有一套實用功能。說.5..10個文件。從技術上講,它們是靜態庫,跨平臺 - SConscript/SConstruct加上Visual Studio項目(不是解決方案)。
這些實用功能用於多個小型項目(15+,數量隨時間增加)。每個項目都有一些文件或整個庫的副本,而不是鏈接到一箇中心位置。有時項目使用一個文件,兩個文件,一些使用一切。通常,實用程序功能作爲每個文件和SConscript/SConstruct或Visual Studio項目的副本包含在內(取決於具體情況)。每個項目都有一個單獨的git存儲庫。有時候一個項目是從其他項目衍生出來的,有時候並不是。 你以隨機順序處理它們中的每一個。沒有其他人(使事情變得更簡單)
問題出現在您修改這些實用功能文件的一個項目上時。
由於每個項目都有一個文件副本,因此會引入新版本,當您稍後嘗試(例如一週後)嘗試猜測哪個版本具有最完整的功能時(例如,您爲某個功能添加了功能),會導致混亂。 cpp在一個項目中,並在另一個項目中添加了另一個函數a.cpp,該項目創建了一個版本分支)
你會如何處理這種情況以避免「版本地獄」? 我能想到的一種方式是使用符號鏈接/硬鏈接,但它並不完美 - 如果刪除一箇中央存儲,它將全部下地獄。硬鏈接在雙引導系統上不起作用(儘管符號鏈接會)。 它看起來像我需要的就像高級的git倉庫,其中項目的代碼存儲在一個本地存儲庫,但與多個外部存儲庫同步。但我不知道該怎麼做,或者如果可以用git來做到這一點。
那麼,您怎麼看?
你說這些文件形成一個靜態庫。那麼爲什麼你必須在每個項目目錄中都有他們的副本?通常的做法是製作一個項目鏈接的靜態庫副本。 – 2010-05-31 13:13:11
我同意尼爾。將這些實用程序本身作爲一個庫來運行。如果您真的擔心沒有在鏈接庫中包含您不需要的實用程序,則最好保留單獨的make文件,以便爲需要它的每個項目構建庫。 – 2010-05-31 13:30:49
@Neil Butterwort:最初是一個「模板」項目(即需要複製的東西),它慢慢演變成更復雜的東西。我有點粗心,最後有多個版本。就這樣。 – SigTerm 2010-05-31 13:42:34