We use GitHub for pretty much everything for mainly two reasons;
- It enforces the same workflow and discipline on all aspects of our company, from code to sales.
- It reduces friction for our (overwhelmingly technical) team to access and take part in anything we do (especially recruitment).
A few gotchas
- Write proper issues & comments; we’ve written about it before. Always give context and clear next steps to your messages.
- Assignee, labels and milestones; take the time to properly label your issues, assign them to somebody on the team (if you’re not sure assign it to yourself or the SCRUM master) and tie it up to a milestone.
- Mentions; we often end up a comment or issue with
/ccfollowed by mentions of people we feel should be included in the thread.
- Meaningful commit messages; avoid things like
updated stuff. You want to make it easy for others to review your changes.
- Always have a README; we always add a
README.mdfile at the root of our repositories to explain what it is and potentially give further instructions (installation, deployment, todo list…).
- Check your notifications; most likely the first thing you should do when you https://github.com/notifications/participating
Our GitHub workflow
- “There are some work done to the master branch (or say the branch my branch/fork is based on) and I want to include the changes” or “There are some work done to the master branch and I got conflict with my PR now” - see QA
We use the SANE Github labels formula helping to highlight the status, type and priority of each issue.
These labels represent the current stage of development of the issue.
|Issue is not yet acted on|
|Issue is currently ongoing|
|Issue is currently in review|
|Issue is done|
|Issue is ongoing QA by WCL|
|Issue is ongoing QA by Clients|
These labels represent the current type of the issue.
|The issue is a question about a feature|
|The issue is a bug to an existing feature|
|The issue is a task to be implemented|
|The issue is an enhancement to an existing feature|
These labels represent the current priority of the issue.
|The issue is of low priority|
|The issue is of medium priority|
|The issue is of high priority|
|The issue is of critical priority and should be resolved as soon as possible|
|The issue is currently blocking the development of the features|