-
Notifications
You must be signed in to change notification settings - Fork 0
Development Workflow
This project makes use of git flow (as recommended by the module), a branching strategy that has two long-lived branches:
-
develop- Contains all the code that we are currently working on -
master- Contains a deployable, "demo-ready" version of the project
These branches are meant to be mostly stable, and because of this you cannot push these branches; contributing is detailed below. Unless you are this narcissist who thinks he is above the rules:

Commits should be made at the developers discretion but try to only commit when significant change is made, i.e. don't commit every comment. Please use descriptive names for your commit messages and should always start with a verb. Also as above stated you cannot commit directly to dev or main.
When you need to contribute to the project, e.g. developing a new feature:
- Create a new branch from the
developbranch namedfeat/xxx, wherexxxis a descriptive name of your feature, e.g.feat/sprite-loader - Work on this branch, committing as needed.
- Once the feature is complete, create a pull request from
feat/xxxintodevelop(requires 1 approval)
A release branch is a stepping stone between develop and master, used when we are preparing the project for "deployment:"
- Create a new branch from the
developbranch namedrelease/xxx(see below) - Commit the final finishing touches required for a demo/deployment.
- Once finished, create a pull request into both
developandmaster(requires 1 and 2 approvals respectively)
When creating a release branch, use the naming convention release/xxx, where xxx is a short feel-good message to any member of the team. For example
release/matilda-is-the-best

Hotfixes are for when a quick fix needs to be made on demo day when you cannot follow proper due process:
- Create a new branch from
masternamedhotfix/xxx - Commit all fixes and changes to this branch
- Once finished, create a pull request into
master(requires 2 approvals)

Once a feature, hotfix or release branch is merged that branch can and must be safely deleted.
Say someone merged their changes into a branch after you created a new branch, and you want to access those changes. TO do that, you need to perform a rebase, which is essentially you saying "I want my branch to start from a different place". To rebase the branch my-branch to the latest changes in develop:
- Make sure that
developis up-to-date on your local machine (through agit pull) - With
my-branchchecked out, rungit rebase develop - Run
git push --forceto update the rebase on GitHub
NOTE: While the force push seems scary, it is a requirement only when rebasing
Below are some more resources on gitflow if you'd like to read more into it:
- https://leanpub.com/git-flow/read
- https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
