-
-
Notifications
You must be signed in to change notification settings - Fork 112
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.
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.
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