Five Dudes Capstone Project.
The rise of large language models like ChatGPT has had a massive impact on the integration of artificial intelligence into everyday life. Music forms an integral part of our lives and we do not always realize this. At Five Dudes, we are excited about the potential to merge artificial intelligence with a service used by billions around the world. Our goal is to harness the use of artificial intelligence to streamline the music listening experience for users everywhere. MoodMix allows us to do just that.
Gerrit Potgieter
Rhevan Kruger
Alex Pretorius
James Hardy
Ian van Wyk
Overview
Our Git organization and management strategy is designed to streamline development, ensure code quality, and facilitate smooth releases. This document outlines our branching strategy, the purpose of each branch type, and best practices for collaboration.
We follow the Gitflow branching model, which helps manage the project's development and release process effectively. The main branches in our repository are:
main
: Contains production-ready code. Always in a deployable state.dev
: Integrates all latest development changes. Used for feature integration and testing.feature/*
: Used for developing new features. Branched off fromdev
and merged back intodev
when complete.release/*
: Used for preparing a new release. Branched off fromdev
and merged into bothmain
anddev
.hotfix/*
: Used for critical bug fixes in the production version. Branched off frommain
and merged into bothmain
anddev
.
- Purpose: Contains the stable, production-ready code.
- Usage: Only release and hotfix branches are merged into
main
. - Best Practices: Ensure all changes are thoroughly tested and approved before merging into
main
.
- Purpose: Integrates all development work. Acts as the primary branch for ongoing development.
- Usage: All feature branches are merged into
dev
. Developers pull fromdev
to stay updated with the latest changes. - Best Practices: Regularly pull from
dev
to minimize merge conflicts and ensure feature branches are up-to-date.
- Purpose: Develop new features independently.
- Usage: Branch off from
dev
to start working on a new feature. Merge back intodev
upon feature completion. - Naming Convention: Use descriptive names, e.g.,
feature/new-login-page
. - Best Practices: Frequently pull from
dev
and resolve conflicts locally before merging back.
- Purpose: Prepare for a new production release.
- Usage: Branch off from
dev
when thedev
branch has enough completed features for a release. Merge into bothmain
anddev
after final testing and minor fixes. - Naming Convention: Use version numbers, e.g.,
release/v1.0
. - Best Practices: Ensure all release-critical issues are resolved before merging.
- Purpose: Address critical bugs in the production environment.
- Usage: Branch off from
main
to fix the bug. Merge the fix into bothmain
anddev
. - Naming Convention: Use descriptive names, e.g.,
hotfix/critical-bug
. - Best Practices: Prioritize resolving the issue quickly and ensure it is tested before merging.
- Creating a Feature Branch
git checkout dev git pull origin dev git checkout -b feature/new-feature