Skip to end of metadata
Go to start of metadata

Description

This page to describe the branching model for ealge development. Basically, we adopt the branching model at http://nvie.com/posts/a-successful-git-branching-model/ with simplify.

Branching Model

Eagle branch model is a simplified version of aforementioned model.

Branches

The branches are defined as:

  • Master branch : always stable, the last release version (the release means formal voted in eagle community)
    • E2E test and unit test should all passed
  • Release branches : There will be each branch for one official release. And a tag for each official release. After released, there should only two kind of commits happens in release branch:
    • Release related fix, e.g. want to release a bug fix based on release branch.  This fix would be released as a minor version, and merge to develop.
    • Documentation fix, this might continue after release.
    • E2e test and unit tst should all passed

Release branch suggested naming: branch-a.b which will be continuously used for following minor release like v{a.b.x}

Release tag suggested naming: v${a.b.c}

    1. For release candidate (rc), build tag with v${a.b.c}-rc${num}
    2. After vote for certain candidate passed, create as tag named v${a.b.c} without rc${num} postfix 
  • Hotfixes: named as hotfix-${issueNumber}, like hotfix-eagle-221. This is forked from master, must be merged to develop.
    • E2E test and unit test should all passed.
  • Develop Branch : named "dev" all active develop happens on here. Release branch cut out from here.
    • Unit test should all passed
  • Feature Branches : This is optional to apache/incubator-eagle. For most features, suggest contributor to fork code to their own repository, have their feature branch. Then send PR to merge to back to develop. Only long term future feature might be created as feature branch in apache/incubator-eagle repository.

Diagram


Steps for Feature Development

Say user "ralphsu" for "eagle-hdfs-audit-log" feature.

  1. User for the develop branch to his own repository, say from apache/incubator-eagle/tree/dev => ralphsu/incubator-eagle/tree/develop, then create feature branch hdfs-audit-log or ${JIRA-ID} (which is recommended as it's much easy to track the changes, especially for long-time work)
  2. User continue add code on ralphsu/incubator-eagle/tree/hdfs-audit-log, and suggest continuously pull from apache/incubator-eagle/tree/develop to keep sync.
  3. User send PR to develop branch at target release cycle.

E2E Test

After setup E2E automation test, it should test master/all release/hotfixed branches when they have new commit.


 

  • No labels