Skip to content

Epic feature branches

Eberhard Beilharz edited this page Aug 28, 2024 · 2 revisions

Epic feature branches

An epic feature branch can be created for a multi-sprint effort on a targeted work item.

Warning

An epic feature branch should not be created without the approval of team lead / product manager.

The root epic feature branch, which should normally be based on master, should be named epic/<shortname>, where shortname is a fairly short but recognizable name, for example epic/gestures, epic/ldml. Sub-branches should use the normal conventional commits prefixes (fix, feat, etc).

Epic feature branches are automatically protected on GitHub, and cannot be pushed to directly -- all changes will require a pull request targeting the epic branch. Do not create sub-epics.

Marking code TODOs in epic branches

Generally, we discourage usage of // TODO style comments in code without a corresponding tracking issue. However, during development of an epic feature, this pattern can be very useful, and adding many tracking issues is just busywork. However, to prevent the comments from disappearing into the background noise, use the epic shortname to make them easy to find:

// TODO-GESTURES: fixup the thingummy

Before merging the epic root branch into master, a search should be done for any remaining TODO-SHORTNAME instances, and these should either be addressed, or turned into issues.

Keeping epic feature branches in sync with master

We need to make sure we regularly merge master into our epic feature branches, to prevent the branches from diverging too far and creating a very difficult merge in the future.

There are many ways we could do this. We have chosen to use pull requests, so that we can more easily track the changes and review the merges.

Note

This process has been automated in the management repository at github/epic-master-merge/mergeMasterIntoEpic.mjs. Use this in preference to doing this manually.

The basic process is, for example for branch epic/x in sprint A18S4:

# Bring both branches up to date
git switch epic/x
git pull -p
git switch master
git pull -p
# Create the PR branch
git switch -c chore/merge-master-to-epic-x-A18S4
# Open the PR, basing it on epic/x branch
hub pull-request -op -M A18S4 -b epic/x

We do this, once per sprint:

  • for each epic feature branch
  • in reverse, from beta to master during beta phase
  • for staging branches on website repositories
Clone this wiki locally