
Code Flow and Branches
######################

Introduction
************

The zephyr Git repository has three types of branches:

master
  Which contains the latest state of development

topic-\*
  Topic branches that are used for shared development of a new feature

vx.y-branch
  Branches which track maintenance releases based on a major
  release

Development in topic branches before features go to mainline allows teams to
work independently on a subsystem or a feature, improves efficiency and
turnaround time, and encourages collaboration and streamlines communication
between developers.

Changes submitted to a development topic branch can evolve and improve
incrementally in a branch, before they are submitted to the mainline tree for
final integration.

By dedicating an isolated branch to complex features, it’s
possible to initiate in-depth discussions around new additions before
integrating them into the official project.


Roles and Responsibilities
**************************

Development topic branch owners have the following responsibilities:

- Use the infrastructure and tools provided by the project (GitHub, Git)
- Review changes coming from team members and request review from branch owners
  when submitting changes.
- Keep the branch in sync with upstream and update on a regular basis.
- Push changes frequently to upstream using the following methods:

  - GitHub pull requests: for example, when reviews have not been done in the local
    branch (one-man branch).
  - Merge requests: When a set of changes has been done in a local branch and
    has been reviewed and tested in a topic branch.
