version-control - 您如何在源代码管理中存储第三方库?

标签 version-control

您如何在源代码管理中存储您在项目中使用的第三方库?

您什么时候将二进制文件存储在源代码管理中?

您什么时候将代码存储在源代码管理中?

你会同时存储两者吗?在什么情况下你会这样做?

(顺便说一句,我正在使用 .NET 但对于这个问题并不重要)

最佳答案

  • 如何: vendor branch 通常是一个好方法
  • 当(第三方) :为了尽量减少所涉及的引用数量:您可以将这些库添加到单独的外部引用(如 Maven)中,但这意味着您需要访问每个环境的额外引用(开发 - 集成 - 认证 - 预生产 - 生产)
  • 当(代码) :为了管理更改的复杂性,当您知道在进行新开发时需要对当前版本进行生产的更新和修复。
  • 为什么(同时存储) : 对于 deployment 原因:您可以在一个引用中管理完整的配置(您需要的元素列表),并随时随地查询:
  • 开发(您查询开发和执行代码所需的内容,包括编译/执行所需的第三方)
  • 测试(集成、认证):您可以使用
  • 查询要更新测试工作区的确切标签
  • 生产:您可以准确地确定从一个来源进入生产的内容:您的 SCM。

  • 对于测试和生产环境,这也意味着你自己的产品(你正在构建的打包结果)也应该进入你的 SCM(只有官方版本,而不是内部使用的中间版本)。
    如果其他项目依赖于您的产品,他们将根据您存储在 SCM 中的打包版本构建自己的项目,而不是根据他们以某种方式重新编译的源代码。

    为什么这很重要?
    因为最终,将在生产中运行的是您产品的打包版本,而不是您的“重新编译的源代码”。因此,使用产品的目标最终形式进行所有测试的重要性,在您的 SCM 中清楚地存储和标记。

    Martin Lazarhis answer 中提出了一个合理的观点

    Source control is called "source" control, because it is supposed to control sources.



    虽然这在历史上可能是正确的,但每个当前的 RCS 都已向 SCM (Source Code Management) 发展,它不仅控制源,还管理对存储为计算机文件的文档、程序和其他信息的更改。
    然后可以存储二进制文件(甚至用二进制增量存储)

    另外,允许其中一些 SCM 提出 S"C"M 功能(如 Source Configuration Management )。
    该 SCM(配置)不仅存储任何类型的“文件集”,还存储这些文件集之间的关系(又名依赖关系),以便您查询一组文件,并“拉取”其他所有交付该集合取决于(构建或部署或运行​​)

    关于version-control - 您如何在源代码管理中存储第三方库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735699/

    相关文章:

    matlab - Matlab中生成版本信息(Matlab Compiler)

    git - SourceTree 暂存错误

    SVN:在 check out 的存储库上切换事件用户

    security - 如何在没有密码的情况下在版本控制中 checkin Azure .pubxml?

    delphi - Windows 7 中的 Delphi 代码存储在哪里?

    .net - 本地源代码管理

    mysql - MySQL 中的版本控制树结构

    git - 如何开始使用对 Monticello 的 git/github 支持?

    version-control - 如何管理共享库?

    linux - Git - 自动 pull 入服务器