2016-08-17 72 views
-1

我們正在開發一個C++項目,內部模塊化爲獨立的存儲庫。 該項目還依賴於外部依賴項:一些開源(爲其構建二進制文件)和一些關閉(爲此我們獲得預構建的二進制文件)。如何管理外部和內部庫的依賴版本?

發佈當一個新的提交供他人使用,一個重要方面是不是簡單地列出依賴關係,但要能夠指定依賴的預期的版本:

  • 對於第三方庫,它會是一個版本號(帶有可能應用於它的修補程序)
  • 對於內部依賴關係,它理想情況下是提交標識或標記。

我們正在尋找一種現有的工具(或方法)來管理依賴關係及其版本,理想地解決內部和第三方依賴關係。

理想情況下,此解決方案的結構使其可供開發人員和自動化流程使用(持續集成浮現在腦海中,確保推動集成分支實際構建)。

回答

1

爲源的依賴關係的一個常見的解決方案是使用一個git的子模塊的svn:外部善變subrepository dependending上源控制。

根據我的經驗,使用Team Foundation Server無法做到這一點。 對於二進制文件,我曾經在我的Makefiles中有一個自定義目標來從共享文件夾或其他任何地方複製依賴關係。

這些目標可以很容易地從CI調用,就像你在本地開發機器上所做的那樣。

+0

謝謝你的建議。我們已經在使用** git submodule **來達到不同的目的,我們並不認爲它適合手頭的問題。特別是,git子模塊堅持在父項目回購庫(這並不總是我們想要的,特別是在開發人員的機器上)中檢索子模塊回購的本地副本。另外它不會乾淨地處理第三方庫,這些庫需要在項目文件(您的示例中爲Makefile)中單獨維護。 –

+0

是的,我知道。我以前的公司也有類似的問題。您可以像第三方一樣管理幾乎所有事情,包括每晚構建或按需構建,將您與第三方建立在相同的共享資源上,並且您還可以將所有內容作爲#rd方進行管理。前一段時間,我一直在尋找解決方案,並沒有發現任何相關的東西。 –