Previously I shared a Code Change Control commit template. The CCC commit template provides much more rigor and documentation than a normal commit message. When you need stability and strict testing, such as when attempting to stabilize for a customer release, the CCC process helps ensure that we include changes that are thoroughly tested and justified.
An alternative approach to using a commit template is to use a GitHub pull request template. When a new PR is created, the description box is auto-populated with the template contents.
When your team enters a critical development stage, you can switch from the standard PR template to the more rigorous CCC PR template shown below.
Table of Contents:
CCC PR Template
The objective of the CCC process is to ensure that all proposed changes need to be included and that they have been properly tested.
Developers should provide the background and justification for their change. The impact to the customer and any potential performance impacts should be noted. Tests should be thoroughly described and all test conditions (e.g. hardware and software versions) noted. Each change should have two reviewers to ensure that the change is high quality.
This template requires extra rigor that can be quite draining. I recommend enforcing the CCC template only during critical stages of development. For normal development cycles, consider using my basic GitHub pull request template.
# Description
Please include a summary of the change and which issue is fixed. Please provide the motivation for why this change is necessary at this stage of the product development cycle.
Fixes # (issue)
## Customer Impact
Please describe any customer facing impact of this change. This can be positive or negative impact.
## Performance Impact
Please describe any relevant performance impact of this change. This can be positive or negative impact. How did you characterize/test the performance impact?
# How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so others can reproduce. Please also list any relevant details for your test configuration.
- [ ] Test A
- [ ] Test B
**Hardware Configuration**:
- [ ] Dev Board
- [ ] Test rack
- [ ] DVT Boards
- [ ] Production Boards
**Software Configuration**:
* Operating System:
* Software version:
* Branch:
* Toolchain version:
* SDK version:
# Reviews
Please identify two developers to review this change
- [ ] @personA
- [ ] @personB
# Checklist:
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published in downstream modules
Example Template File
You can find an example implementation file in templates
GitHub repository. The PULL_REQUEST_TEMPLATE_CCC.md
file contains the example template shown above. To use this file in your own project, copy that it into your project and remove _CCC
from the template name.