【问题标题】:How to manage dependencies versions, for both external and internal libraries? [closed]如何管理外部和内部库的依赖版本? [关闭]
【发布时间】:2016-12-23 19:57:12
【问题描述】:

我们正在开发一个 C++ 项目,内部模块化为单独的存储库。 该项目还依赖于外部依赖项:一些开源(我们为其构建二进制文件)和一些封闭(我们为其获取预构建的二进制文件)。

当发布一个新的提交供其他人使用时,一个关键的方面不是简单地列出依赖项,而是能够指定依赖项的预期版本:

  • 对于第 3 方库,它将是一个版本号(可能会应用补丁)
  • 对于内部依赖,理想情况下是提交 ID 或标签。

我们正在寻找一种现有的工具(或方法)来管理依赖项及其版本,理想地解决内部和第 3 方依赖项。

理想情况下,此解决方案是结构化的,以便开发人员和自动化流程都可以使用它(想到持续集成,确保真正构建集成分支)。

【问题讨论】:

    标签: c++ version-control dependencies dependency-management


    【解决方案1】:

    源依赖的常见解决方案是使用 git submodulesvn:externalmercurial subrepository 依赖于您的源代码控制。

    根据我的经验,使用 Team Foundation Server 无法做到这一点。 对于二进制文件,我曾经在我的 Makefiles 中有一个自定义目标来从共享文件夹或其他任何地方复制依赖项。

    并且可以像在本地开发机器上那样从 CI 中轻松调用这些目标。

    【讨论】:

    • 感谢您的建议。我们已经将 git submodule 用于不同的目的,我们认为它不适合解决手头的问题。特别是, git submodule 坚持在父项目 repo 中检索子模块 repo 的本地副本(这并不总是我们想要的,特别是在开发人员的机器上)。此外,它不会完全解决第 3 方库,需要在项目文件中单独维护(在您的示例中为 Makefile)。
    • 是的,我知道。我们以前的公司也有类似的问题。您可以通过夜间构建或按需构建推动您的构建在与第 3 方相同的共享资源上作为第 3 方管理几乎所有内容,并且您也可以作为#rd 方管理所有内容。前段时间我一直在寻找解决方案,但没有找到任何相关的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多