We tried to follow Vincent Driessen’s Gitflow model to clean up the repository and let everyone work in parallel. It’s made super easy with GitKraken which has a gitflow plugin available and is just generally awesome. However we of course ran into some problems using gitflow for the first time.
The things we did right
We set up protections for the master branch and develop branch which forced everyone to at least not work directly on develop and to create pull requests to merge features in.
We kind-of followed the model, using feature and hotfix branches off of develop to fix problems and tagging releases in develop. However, we didn’t ever use the master branch which while lazy wasn’t much of a problem on a small scale project.
The things we did wrong
- We didn’t use the master branch
- We didn’t use
git merge --no-ffwhich made the branch history a little unclear and harder to roll back features if we needed to.
- Getting buy in from designers and artists
The game designers somewhat followed Gitflow. Unsurprisingly the designers with more coding ability correctly created feature branches and pull requests. Although couple of times their branches bloated to include everything they were working on instead of just one feature. However, they roughly got everything right.
The designers with less programming ability stuck to the persistent LevelDesign branch which went completely against the model. We (the programmers) enabled them by merging it into develop for builds and keeping it parallel to develop when new features were added. When, after several sprints we closed the branch, a New_LevelDesign branch was created which has persisted to this day.
I believe this was a failure on our part to thoroughly explain the reason to use Gitflow and to enforce the standards. If we had taken the time at the beginning to spend more time explaining, and enforcing for the first couple of weeks there would be no problem. However, we were lazy and it seemed like less work to just let them have the branch than teach skills beyond git push and pull with a gui.
The game artists also had a branch interestingly named feature/art that evolved separately from the rest of the repository. It essentially worked just as a drop box for the artists to upload assets to and wasn’t merged with anything else for the duration of the project. In the future it might make sense to give artists a separate repository to keep overall size down while serving the same purpose.
Overall I’m happy with using Gitflow and will keep using it on personal and production projects. It worked well for everyone who was confident with Git and making exceptions for level design wasn’t a problem.