我们的团队正在进入规模更大的项目,其中许多项目使用了多个开源项目。
有什么建议或最佳实践来保持库和依赖项相对模块化并在新版本发布时易于升级?
换句话说,假设您制作了一个作为开源项目分支的程序。随着这两个项目的发展,维护和共享核心更新的最简单方法是什么?
请就我所问的问题提供建议……我不需要“你应该这样做”或“你为什么”……谢谢。
我们的团队正在进入规模更大的项目,其中许多项目使用了多个开源项目。
有什么建议或最佳实践来保持库和依赖项相对模块化并在新版本发布时易于升级?
换句话说,假设您制作了一个作为开源项目分支的程序。随着这两个项目的发展,维护和共享核心更新的最简单方法是什么?
请就我所问的问题提供建议……我不需要“你应该这样做”或“你为什么”……谢谢。
对于开源项目的克隆,您最头疼的问题之一就是根据上游源代码保持同步/修补。您可能不关心新功能,但您肯定需要应用关键的错误修复。
我的建议是仔细地将这些内部项目包装到共享库中,这样如果 ABI 没有被更改破坏,您就可以或多或少地轻松升级这些部分。
还有一件事——如果你在开源项目中发现并修复错误——不要把修复留给自己。将补丁推送到上游。这将使项目变得更好,并将节省您与新版本合并的时间。
按优先顺序
1 和 2 是非常受欢迎的(但是,分别是快速和非常慢),而第三个选项只会导致令人头疼和错误,因为您的代码库偏离了依赖项的代码库。在我的代码中,我什至没有在 IDE 中加载第 3 方代码,除非我必须仔细阅读头文件。这消除了改变不属于我的东西的诱惑。
就模块化而言,这是假设您使用的是相对稳定的第 3 方库,仅针对面向公众的界面进行编程。仅仅因为你有源代码并不意味着你必须在你的代码中使用它。这应该允许更新本质上是拖放。现在,这完全是理想主义的,但这是我用我工作的代码所追求的。