Skip to content

Branch Workflow#

In order for of our builds to run/packages to be published automatically, we follow a custom workflow when it comes to feature branch management. To better understand that workflow, let's run through an example.

Create a Pull Request of master#

All feature branches are based of master as it is the "base" branch for all repositories against which pull requests are made.

Start with master#

First and foremost, make sure your current branch is master and it is up-to-date.

~/monster-ui (master)$ git checkout master
~/monster-ui (master)$ git fetch origin

Create your feature branch#

You can then create your feature branch named after the issue ticket you are working on and checkout to it.

~/monster-ui (master)$ git checkout -b <TICKET-#>

Commit your changes#

Apply changes relate to the feature you are working on.

~/monster-ui (<TICKET-#>)$ git add -p
~/monster-ui (<TICKET-#>)$ git status
~/monster-ui (<TICKET-#>)$ git commit

Push your feature branch#

Pushing your branch to the remote server serves as a backup and it can be pulled down by teammates in order to test the changes if needed:

~/monster-ui (<TICKET-#>)$ git push origin <TICKET-#>

Create a pull request#

Once your branch is on the remote server, you can create a pull request with <TICKET-#> as the head branch and master as the base branch.

The naming convention regarding pull request out of master is as follows:

<TICKET-#>: <Pull request title>

Don't forget to add reviewers to your pull request as at least one review is required before you can merge it.

Create a Pull Request of <latest>#

Now you need to create a branch based out of <latest> and cherry-pick the changes contained in <TICKET-#> into it.

At the time of writing, the <latest> branch is 4.3.

Start with <latest>#

~/monster-ui (<TICKET-#>)$ git checkout <latest>
~/monster-ui (<latest>)$ git pull origin

Create your feature branch#

~/monster-ui (<latest>)$ git checkout -b <latest>-<TICKET-#> <latest>

Notice how <latest> is appended to the branch name.

Cherry-pick your changes#

Log the commits in the <TICKET-#> branch and take note of the first and last SHA-1 hashes for the commits related to the work on that branch. Those references will be used to cherry-pick your changes into the <latest>-<TICKET-#> branch.

~/monster-ui (<latest>-<TICKET-#>)$ git cherry-pick <first-sha-1>^..<last-sha-1>

Push your mirror feature branch#

~/monster-ui (<latest>-<TICKET-#>)$ git push origin <latest>-<TICKET-#>

Create a pull request#

Once your branch is on the remote server, you can create a pull request with <latest>-<TICKET-#> as the head branch and <latest> as the base branch.

The naming convention regarding pull request out of <latest> is as follows:

[<latest>] <TICKET-#>: <Pull request title>

You should add the same reviewers you added to this pull request than for the <TICKET-#> one.