How we use git and git-flow to handle all Tigase projects
Over time Tigase grew from a single server project to a family of applications, tools and libraries related to XMPP. To ease the task of managing it we have migrated to Redmine a while back and you can check the list of all projects here. Later on we migrated from SVN to Git. In this continuous effort to improve the workflow we decided to also adopt git-flow, however we changed a bit naming convention to avoid confusion. More detailed description of how we use git and git-flow in Tigase is available on the wiki page named Git best practices. We decided to adapt Following branch naming conventions:
- master - branch holds current development code from which release branch is created.
- stable - current 'stable' branch to which code is merged after the release.
- old-stable - branch holds code on pair with the n-1 stable version (to allow hot-fixes for previous versions as well without creating "fix-for-*" for each version).
- hotfix - short-lived branch intended for creating a hotfix, branched from current stable (and, if applicable, 'old-stable' as well), merged back with the fix and subsequently deleted.
- release - branch intended for the purpose of the release - frozen code to which only documentation and last-minute fixes can be commited.
- feature branch - If solving some problem requires more than one commit it's suggested to use separate branch named
feature/case0000_description(it's suggested to use padding to four digits) where the number matches ticket from Redmine. It's up to the committer whether such branch should be only local or shared with all by pushing it to remote repository. If the latter is chosen then, to keep remote repository, it's suggested to clean such branch from remote repository after the work is done.