Skip to content

KAZOO Support Channels

This documentation is curated by 2600Hz as part of the KAZOO open source project. Join our community forums here for peer support. Only features in the docs.2600hz.com/supported space are included as part of our 2600Hz Support Services plan.

Branch Workflow#

In order for of our builds to run and 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 related 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 5.0.

Start with <latest>#

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

Create your feature branch#

~/monster-ui (<latest>)$ git checkout -b <TICKET-#>-<latest> <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 <TICKET-#>-<latest> branch.

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

Push your mirror feature branch#

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

Create a pull request#

Once your branch is on the remote server, you can create a pull request with <TICKET-#>-<latest> 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.