我保持混帐一个Redis Sentinel library for Laravel有两个积极的发展分支:如何维护两个或更多不合并的分歧分支?
1.x ... o ———— o —————— o — o — o — o — o ...
↘ ↑ ↑ ↖
2.x (breaking change) — o — o — o — o — o ...
如上图所示,我分叉1.x的以适应从这个库集成框架的新版本重大更改,但我发现自己提交或手动复制分支之间的代码,以更新两个分支中的通用功能。
这似乎是因为他们各自包含的代码是不与其他兼容我永远不能合并这些分支机构。我可以采取哪些更好的工作流程来减少合并分支间常见更改所需的工作量?
感谢您的中肯的意见。这是我担心的。 * 1.x *分支在今年年底不推荐使用,但我希望能够为未来学习一些技巧或工作流程。分支无法合并,因为它们都依赖于版本之间更改的外部代码(以及将每个分支约束到这些版本的程序包管理器元数据)。我会把这个开放一段时间,但我希望这是对这些情况可能的最佳答案。 –
在外部依赖性差异的情况下,您可以实现一个接口还是使用其他方法来允许代码在编译时或在运行时选择外部库的哪个版本?这实际上是将它们合并到一起的一种手段 - 并且将以应该使更新更容易的方式分离每个版本的代码。但是,这可能并不值得,尤其是如果您在2017年底弃用1.x。 – LightCC
我可以,而且我确实使用此方法处理项目需要支持的框架版本之间的轻微不兼容问题,但是,在这种情况下,这种差异足够大,我没有看到这样做的价值。太多的运行时条件(毕竟是PHP)会带来复杂性和开销,我认为我不能将这些代码强制到一个分支中。再次感谢您的时间 - 在阅读您的建议后,我对分叉的决定感到更好。我想我正在寻找那个神奇的子弹!你已经给了我一些关于未来项目的想法。 –