Durante o processo de desenvolvimento você pode precisar entender melhor o fluxo das branchs e releases da Snowman Labs. Essa página irá servir como guia, mas é sempre bom revisar com o Stack Lead e o Tech Lead o fluxo usado no projeto, pois cada projeto pode vir a ter suas particularidades.
Essa página não vai explicar o fluxo básico do Git caso ainda tenha dúvidas sobre isso veja os links nas referencias.
Abaixo segue uma imagem do padrão de fluxo de trabalho no git na Snowman Labs.
A branch master será a branch principal do projeto, onde tudo em desenvolvimento deverá ficar e será baseado, exceto quando forem releases ou hotfix. Essa branch fica como protected por padrão, aumentando a segurança de mudanças nessa branch.
A branch de features se refere as branchs criadas para serem trabalhadas nas issues criadas ou algo novo sendo desenvolvido. Ou seja, uma branch de feature geralmente irá seguir o padrão do Gitlab de <numero_issue>-<titulo-da-issue>
o que irá ajudar a sempre correlacionar a branch com a Issue em que está sendo trabalhada mesmo antes de ter o MR (Merge Request) criado ou mesmo de ter sido feito algum commit.
É uma branch fixa onde tudo que estiver pronto pra ser enviado pra produção irá ficar, porém atente-se que é preciso adicionar a Tag de versão ao commit dessa Release. Além disso, atente a Branch de Hotfix. Assim como a branch master, a branch de release pode ser definida como protected para aumentar a segurança do desenvolvimento.
Quando forem encontrados problemas após uma release ter sido criada e precisar entrar na Release, a branch de Hotfix precisa ser criada baseada na última versão da release que se deseja alterar, pois assim quando for criado o MR serão criados 2 MR onde uma será para branch Master
e outra pra branch de Release
. Quando novo MR for feito na branch de Release lembrar de criar nova tag de versão.
No caso de a hotfix não ser de uma release ou poder entrar na próxima release ela poderá seguir o fluxo de uma branch de Feature.
A cada nova release criada, será preciso definir uma tag de versão para o commit na branch de Release que deve seguir o padrão de Controle de Versão. Lembrando que outras tags podem ser usadas de acordo com as necessidades do projeto, mas sempre revise com o Teck Lead e o Stack Lead do projeto.
Branches in a Nutshell (em ingles)
Branching Workflows (em ingles)
Distribuited Workflows (em ingles)