我正在重新構建現有代碼庫。我們正在轉向SVN並期待軟件活動的增加,我需要一個可擴展和強大的結構。SVN:跨項目共享公用庫/代碼
我希望我們的要求與其他公司的要求不太相似,所以我會從你們那裏得到一些反饋。
問題
我有一些項目:庫和應用程序。應用程序依賴於庫,而且一些庫依賴於對方。
我們有很多產品。每個產品都是包含一些庫和一些應用程序的MSI。
這些項目是C++,它們之間的依賴關係是頭文件和導入庫/ DLL--我們目前正在Windows下開發,但最終將移植到MACOS和Linux。
儘管每個項目都是其中一些項目的獨立實體,但我們最終同時更新了其中的幾項。例如,在處理app_0時,我們可能會更改lib_a中的某些代碼(可能是錯誤修復,添加的功能等)。 但是我們不想強迫開發人員總是檢查項目依賴關係的來源。
潛在的解決方案
每一個項目是在SVN自己的目錄,並有一個「dependencies.txt」文件中列出的頭,和的.libs .DLL文件它需要以及這些應該在磁盤上創建。一旦檢出項目,腳本會自動分析此文件以檢索依賴項。頭文件從SVN中檢索(部分檢出),而二進制文件則從服務器中獲取。
項目遵循通常的幹線/標籤/分支結構。
在磁盤上,每個項目都位於其自己的目錄中,處於扁平結構中。輸出目錄包含二進制文件,這可以通過構建項目或作爲處理'dependencies.txt'文件的結果從服務器複製而生成。
- 輸出
- win32_debug
- lib_a.lib
- lib_a.dll
- win32_debug
- lib_a
- 源
- 公共
- lib_a.h
- other.h
- PROJECT_1
- 依賴。TXT
- 構建
- 來源
- project_1.cpp
這種結構意味着我們可以在PROJECT_1工作,而無需檢出來源lib_a。但是我們仍然可以將庫檢出到'./lib_a'中,並且不用修改project_1就可以使用它的源文件,因爲頭文件和導入庫的位置保持不變。
「安裝程序」項目用於發佈軟件。該項目將簽出發佈所需的所有項目並構建它們。
在發佈期間,爲所有項目創建「發佈」分支。所有應該進入發行版的變化都將付諸實施。這樣我們只需要在結帳(跟蹤發佈分支)上運行更新以獲取最新的更改。
你有問題要問? – 2013-05-07 11:24:21
尋求有關如何解決所陳述的問題和/或對我提出的解決方案的意見的建議。 – JPh 2013-05-07 13:55:26
@JPh - 你最終做了什麼? – DemiSheep 2014-06-09 18:26:51