gpt4 book ai didi

c++ - 将所有项目依赖项放入项目存储库中是好习惯吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:32 25 4
gpt4 key购买 nike

我有一个项目使用几个(目前约 6 个)依赖项(其他库)。它们中的大多数都在 MIT/简化的 BSD 许可证上,所以将它们复制到我的 repo 应该不是问题。

将所有这些库放入我的存储库并推送它们是否是一个好习惯(当新版本出现时,也更新它们)?或者我的项目仓库应该只包含项目文件(代码、 Assets 等)?

优点:

  • 建筑非常简单,因为我拥有我需要的一切 close
  • 添加库意味着我使用这些版本测试了我的项目,因为其他版本(旧版/新版)可能会产生一些问题

缺点:

  • 项目代码库膨胀
  • 必须手动更新依赖项
  • 如果我还想粘贴构建版本,我将不得不粘贴很多
  • 文件,它会占用大量空间,所以可能坚持使用源代码只有?
  • 有些库可能没有很好的许可证,直接使用它们(除了要求用户自己获取有效库之外)并将它们放在我的 repo 中可能会带来一些麻烦

  • 拥有更多项目来保持依赖性意味着我必须同时为所有项目更新它们(例如,如果我根据当前项目(它的库)创建一些其他项目,那么它们都将具有相同的依存关系)

最佳答案

简短回答:视情况而定。

长答案:

在你质疑将代码包含在你的存储库中是否合适之前,你应该问清楚是否应该严格控制依赖关系或更放松。

这个问题的答案取决于您如何分发您的项目、您的客户/用户想要什么、您是否需要对依赖项进行任何源代码更改以及任何其他项目要求。

例如,假设您要销售硬件设备,而您的代码是设备的固件。在这种情况下,您可能希望严格控制依赖项(需要非常特定的版本)。这使您可以完全控制整个系统,从而简化系统测试,并且如果您的设备符合某些安全、保障或可靠性要求(例如,它是医疗设备或发送到 Pluto 的探针),则这一点可能很重要。一般来说,如果您以二进制或文件系统镜像的形式分发您的产品,您可能希望使用固定依赖项。

如果您希望用户能够动态链接到他们系统随附的任何版本的依赖项(这在很多方面都很有值(value),包括安全更新),那么您可能希望放宽要求。明确支持哪些版本,将自己限制在这些版本中可用的文档化 API,使用工具来强制执行要求(如果依赖项太旧则出错),并针对尽可能多的依赖项版本测试您的代码.

一旦您知道您希望对依赖项进行多严格的控制,您就可以选择用于管理它们的机制。您可以使用 Apache Ivy 之类的工具来自动获取依赖项,使用 GNU Autoconf 来执行特定版本,或者您可以将代码 pull 入 Git 存储库并自行构建。具体的选择并不重要;使用任何满足您的要求并且对您和您的用户来说最简单的东西。

关于c++ - 将所有项目依赖项放入项目存储库中是好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32154192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com