Branch names follow the format TYPE/ISSUE/SUMMARY
. You can create it with git checkout -b TYPE/ISSUE/SUMMARY
.
TYPE
can be bug
, chore
, or feature
.
ISSUE
is either a Github issue or an issue from some other
issue tracking software.
SUMMARY
is is short summary of the purpose of the branch composed of lower case words separated by '-' so that it is a valid PRERELEASE
for the Gem version.
- Update
PRERELEASE
to match theSUMMARY
in the branch name. If you branched frommaster
, and version.rb does not havePRERELEASE
defined, then adding the following lines afterPATCH
:
# The prerelease version, scoped to the {MAJOR}, {MINOR}, and {PATCH} version number.
PRERELEASE = '<SUMMARY>'
rake spec
- Verify the specs pass, which indicates that
PRERELEASE
was updated correctly. - Commit the change
git commit -a
Make your changes or however many commits you like, committing each with git commit
.
- Run specs one last time before opening the Pull Request:
rake spec
- Verify there was no failures.
- Generate yard documentation to ensure all new code is documented:
rake yard
- Verify there were no
[warn]
ings. - Verify there were no undocumented objects.
Push your branch to your fork on github: git push TYPE/ISSUE/SUMMARY
- Create new Pull Request
- Add a Verification Steps to the description comment
# Verification Steps
- [ ] `bundle install`
## `rake spec`
- [ ] `rake spec`
- [ ] VERIFY no failures
## `rake yard`
- [ ] `rake yard`
- [ ] VERIFY no `[warn]`ings
- [ ] VERIFY no undocumented objects
You should also include at least one scenario to manually check the changes outside of specs.
- Add a Post-merge Steps comment
The 'Post-merge Steps' are a reminder to the reviewer of the Pull Request of how to update the PRERELEASE
so that version_spec.rb passes on the target branch after the merge.
DESTINATION is the name of the destination branch into which the merge is being made. SOURCE_SUMMARY is the SUMMARY from TYPE/ISSUE/SUMMARY branch name for the SOURCE branch that is being made.
When merging to master
:
# Post-merge Steps
Perform these steps prior to pushing to master or the build will be broke on master.
## Version
- [ ] Edit `lib/metasploit/credential/version.rb`
- [ ] Remove `PRERELEASE` and its comment as `PRERELEASE` is not defined on master.
## Gem build
- [ ] gem build *.gemspec
- [ ] VERIFY the gem has no '.pre' version suffix.
## RSpec
- [ ] `rake spec`
- [ ] VERIFY version examples pass without failures
## Commit & Push
- [ ] `git commit -a`
- [ ] `git push origin master`
When merging to DESTINATION other than master
:
# Post-merge Steps
Perform these steps prior to pushing to DESTINATION or the build will be broke on DESTINATION.
## Version
- [ ] Edit `lib/metasploit/credential/version.rb`
- [ ] Change `PRERELEASE` from `SOURCE_SUMMARY` to `DESTINATION_SUMMARY` to match the branch (DESTINATION) summary (DESTINATION_SUMMARY)
## Gem build
- [ ] gem build metasploit-credential.gemspec
- [ ] VERIFY the prerelease suffix has change on the gem.
## RSpec
- [ ] `rake spec`
- [ ] VERIFY version examples pass without failures
## Commit & Push
- [ ] `git commit -a`
- [ ] `git push origin DESTINATION`
To update the CHANGELOG.md with the merged changes or release the merged code see RELEASING.md