Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A branch for every feature:  Group leads and developers should define units of code development that are big enough to be relevant to others, but simple enough that it can be called one feature (or perhaps a couple of highly-interdependent features) and make a branch for each unit of work.  These branches are called "feature branches" in our documentation.  The developer should make commits that are minimal atomic units of work to complete the feature that the branch seeks to implement.  This separation makes it easier to review and debug later.   New development should always start as branch from "master".  Avoid creating "large" branches that contain many features and touch dozens of files.   If a large branch is needed for some major development, the SE hub should be involved in planning.

Bug fix branches:  When a bug is found, the branch for developing a fix should start from the commit that introduced the bug.

Focus on your branch:  While working on their branch, developers should focus on the work necessary to complete the branch and not worry about what else is going on.  In particular, there is almost never a need to "merge from master" or "stay current" with development going on in master or other branches.   If a developer thinks a merge from master or another branch is necessary to complete their work, they should check with an Integrator first.

Bug fix branches:  When a bug is found, the branch for developing a fix should start from the commit that introduced the bug.  This is so that any feature branch which also contains the bug can easily merge in the bug fix without having to merge in many other changes that may have occurred while the feature branch was being developed.

Testing and Merging: When the feature branch is done, the developer performs relevant testing within the feature branch, issues a "pull request", and designates an Integrator.  The Integrator conducts the code review, merges the feature branch into the "next" integration branch and tests the feature within the latest version of ACME.  The integrator and developer may need to work together to resolve any issues that arise from the code review or testing in the "next" branch.  The integrator will then  merge the branch into master.  Once merged to master, the branch is complete and the developer can move on to other topics.

...