因此,我们开始在服务器端和移动开发中使用 gitflow 工作流。对于服务器端代码来说,它非常有效,因为有测试覆盖率和构建自动化,功能分支一旦被测试 OK 就会合并到开发分支中。与移动开发不同的是,由于更改立即生效(除了构建和测试之外没有部署时间),您可以快速测试是否存在推送的代码中的任何错误并快速进行更改。因此,这种工作流非常适用于服务器端开发。然而,在移动开发中我们使用这种工作流存在问题。
使用 gitflow 工作流,我们有三个持久分支,即 development、staging 和 master。master 分支上的代码会推送到我们的 Play 商店应用程序中,我们在 staging 中拥有另一个 Google Play 商店应用程序,该应用程序仅向团队成员提供,并且我们使用 Crashlytics Beta 仅向我们团队的开发人员分发最新的开发分支代码。每当有人开始着手新功能时,该人就会创建从 master 派生的 feature branch(以前我们是从 development 派生),一旦功能准备好,就会将其作为 pull request 合并到 development 中。每天,我们都要审查 pull requests 并将通过审查的请求合并到 development 中。
现在,我们使用这种工作流面临两个主要问题。其一是:假设我们将某个功能合并到了 development 中,后来发现其中存在许多错误。现在无法再推送任何修改,整个开发周期就会被卡住,因为该代码已经与 development 合并。这就是我们开始从 master 派生 feature branches 而不是从 development 派生的原因,至少每个功能分支都将拥有完全可工作的代码。一种方法是将每个功能单独分发给团队成员进行测试,然后再合并到 development 中,但这非常繁琐。是否能使用不同的工作流解决这个问题呢?
另一个问题是代码中的冲突。由于每个功能分支的基础代码来自 master 分支,并且必须与 development 合并,现在经常出现很多冲突。以前当我们从 development 派生时,我们经常将 development 分支与人们正在开发的 feature branches 合并,因此没有冲突,但现在不能这样做了。现在解决冲突的方法是从 feature branch 创建另一个临时分支,将 dev 代码合并到其中,解决冲突,然后将其作为 pull request 提交,这也稍微有点繁琐。
所有这些看起来像是 gitflow 工作流不适用于移动开发。是否有更好的移动开发工作流或实践可遵循来解决这些问题?
使用 gitflow 工作流,我们有三个持久分支,即 development、staging 和 master。master 分支上的代码会推送到我们的 Play 商店应用程序中,我们在 staging 中拥有另一个 Google Play 商店应用程序,该应用程序仅向团队成员提供,并且我们使用 Crashlytics Beta 仅向我们团队的开发人员分发最新的开发分支代码。每当有人开始着手新功能时,该人就会创建从 master 派生的 feature branch(以前我们是从 development 派生),一旦功能准备好,就会将其作为 pull request 合并到 development 中。每天,我们都要审查 pull requests 并将通过审查的请求合并到 development 中。
现在,我们使用这种工作流面临两个主要问题。其一是:假设我们将某个功能合并到了 development 中,后来发现其中存在许多错误。现在无法再推送任何修改,整个开发周期就会被卡住,因为该代码已经与 development 合并。这就是我们开始从 master 派生 feature branches 而不是从 development 派生的原因,至少每个功能分支都将拥有完全可工作的代码。一种方法是将每个功能单独分发给团队成员进行测试,然后再合并到 development 中,但这非常繁琐。是否能使用不同的工作流解决这个问题呢?
另一个问题是代码中的冲突。由于每个功能分支的基础代码来自 master 分支,并且必须与 development 合并,现在经常出现很多冲突。以前当我们从 development 派生时,我们经常将 development 分支与人们正在开发的 feature branches 合并,因此没有冲突,但现在不能这样做了。现在解决冲突的方法是从 feature branch 创建另一个临时分支,将 dev 代码合并到其中,解决冲突,然后将其作为 pull request 提交,这也稍微有点繁琐。
所有这些看起来像是 gitflow 工作流不适用于移动开发。是否有更好的移动开发工作流或实践可遵循来解决这些问题?