因此,我们开始在服务器端和移动开发中使用 gitflow 工作流。它与服务器端代码配合得非常好,因为有测试覆盖率和构建自动化,功能分支一旦测试正常就会合并到开发分支中。与移动开发不同,由于更改会在您希望的时候立即生效(除了构建和测试之外没有时间进行部署),您可以快速测试您推送的代码中是否存在任何错误并快速进行更改。所以这个工作流程非常适合服务器端开发。但是,我们在使用此工作流程的移动开发方面遇到了问题。
使用 gitflow 工作流,我们拥有三个持久分支,即开发、暂存和主控。主分支上的代码转到我们的 Play 商店应用程序,我们还有另一个封闭测试版 google play 商店应用程序用于暂存,仅对我们的团队成员可用,我们使用 crashlytics 测试版将最新的开发分支代码仅分发给我们团队的开发人员。每当有人开始开发新功能时,该人都会创建从 master 分叉的功能分支(以前我们曾经从开发中分叉它),一旦功能准备就绪,就会创建一个 pull request 到开发中。每天,我们都会审查拉取请求,并且可以将其合并到开发中。
现在,我们在此工作流程中面临两个主要问题。一种是假设我们将一些功能合并到开发中,后来发现其中有很多错误。现在不能再往前推了,整个开发周期都被卡住了,因为该代码已经与开发合并了。这就是我们开始从 master 分支而不是开发分支的原因,因为至少单个特性分支将具有完整的工作代码。一种方法是每个功能都可以单独分发给团队成员进行测试,然后才能合并到开发中,但这非常麻烦。那么这个问题可以通过不同的工作流程来解决吗?
另一个问题是代码冲突。由于每个功能分支的基本代码都来自主分支,并且必须与开发合并,因此现在存在很多冲突。早些时候,当我们从开发中分叉时,我们经常将开发分支与人们正在开发的特性分支合并,因此没有冲突,但不能再这样做了。所以现在为了解决冲突,我们从特性分支创建另一个临时分支,我们将开发代码与它合并,修复冲突并将其作为拉取请求,这又有点麻烦。
这一切看起来都像是 gitflow 工作流程不适合移动开发的问题。人们是否已经采用了更好的移动开发工作流程,或者甚至可以遵循一些实践来解决这些问题?