我们在客户站点部署了一个开源软件,该软件占库存软件的 99.9%,有一个或两个微小的变化——改变依赖关系和几个配置设置。原始代码位于 Github 存储库中,并且正在快速开发。我们希望不时重新部署代码(可能作为新构建,而不是拉入现有部署),保留我们的更改。设置完成后,我们还需要将整个更新过程转移到客户端。
管理此问题的最佳方法是什么?几种可能性:
分叉和合并
我们可以将代码分叉到一个新的 github 存储库中,然后经常合并来自主存储库的更改。我不喜欢这个的一些事情:
- 我们的变化将被埋葬在历史中。
- 它会导致额外的维护(而且 afaik,没有办法通过 Github 的网络应用程序对我们的 repo 进行新的更改 - 需要有人从桌面拉然后推送)
- 因为代码将从我们的 repo 部署,所以我们会错过原始 repo 中的新分支等更改,除非我们专门寻找它们。在本地,Git 会说部署是“最新的”
分叉和变基
我们可以分叉代码,添加我们的更改,然后每次我们重新部署时,检查我们的分叉,然后立即将其重新定位到最新的主版本。
我不喜欢的: 1. 好吧,我不确定这是否真的有效。我似乎记得我之前尝试过这个时遇到了奇怪的合并冲突。
将变体作为补丁存储在某处
也许我们根本不应该分叉。也许我们应该将我们的变体的补丁存储在某个地方,然后部署过程如下所示:
- 查看最新的主版本
- 下载并应用我们的补丁
改进代码,这样我们就不必这样做了
理想情况下,也许我们会改进代码,以便我们所有的“变体”都通过干净的配置文件处理,这些文件可以直接复制进去,而不会发生冲突。
想法?这是一个不寻常的情况吗?我还缺少其他解决方案吗?我们没有使用任何自动部署工具(Chef 等),因为我们在这个盒子上没有 root 访问权限(这有点乱)。