Git for mobile platforms
Last modified on Tue 29 Aug 2023

Rules from previous chapters should be the minimum for all platforms. Few more are specific and applicable only for mobile platforms. If you cannot apply some of the mentioned rules to your project, please talk with another platform and try to find a viable solution for both of you. I cannot emphasize enough how important it is to have both platforms in sync!

Git Flow/Infinum Flow

We use a variant of the Git Flow workflow. There are some differences between our variant and the linked page, as described in this chapter.

Git Flow

On most of our projects, we will use main as the main branch, and develop will not be used. All development will be done on the main branch. Each release is tagged with the version number described in Using Git chapter.

We noticed that only one of them is used actively when having both main and develop branches. Since we have tags on release commits, having a branch that only contains published code seems unnecessary. That is why, for simplicity, we only keep the main branch as the main branch and track releases via tags.

Branches

The main branches in this flow are:

Pull requests

Each pull request must have an automatic check - running tests or building the app if your project doesn’t have tests. Setup on GitHub is described in the general rules of this handbook. While setting up Bitrise Checks on projects, you have Android and iOS handbook chapters.

Deployment

Deployment is done via tags and Bitrise CI/CD. You can find the chapters on setting up Bitrise on your project here for: Android & iOS.

Again, sync with another platform as much as possible. Few stuff that should be defined and synced:

There is an app-deploy-script which will come in handy in case of deployment. It already covers all of the mentioned cases above - it has support for multiple environments, generates and reads the last version, generates build number from tags count, has support for changelogs - pretty much everything it needs.