# Definição do Processo

##### **Resumo do processo**

Em termos de desenvolvimento, **um *Branch* é um galho de um tronco (*Trunk*)**, que é o repositório principal do código fonte do sistema. **Na prática o *Branch* é uma cópia do código onde os desenvolvedores farão as correções/implementações necessárias**, **preservando assim a integridade do código no *Trunk***. Se as mudanças funcionarem conforme o planejado, elas serão mescladas de volta para o "tronco principal" (*Trunk*).

Essa prática é usada o tempo todo durante o desenvolvimento, **onde apesar de o *Trunk* ser o repositório principal do código fonte, todas as alterações devem ser feitas nos *Branchs***, por isso a nomenclatura **Branch de Versão ou Branch de Versão de Trabalho**.

---

##### **Envolvidos no processo**

Indiretamente, toda a equipe de desenvolvimento e qualidade fazem parte do gerenciamento do Branch de Versões. Diretamente cada Branch de Versão terá uma dupla responsável por sua abertura, manutenção e fechamento, ou seja, um desenvolvedor e um testador que darão início ao Branch da Versão e o acompanharão até que o mesmo seja finalizado. Arquivo com a programação dos responsáveis pelo branch de cada versão <span style="text-decoration: underline;">[Clique Aqui](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/page/programacao-dos-responsaveis-pelo-branch-das-versoes)</span>.

---

##### **Etapas do processo**

- <span style="text-decoration: underline;">[Abertura do Branch da Versão](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/chapter/abertura-do-branch-de-versoes)</span>
- <span style="text-decoration: underline;">[Manutenção do Branch da Versão](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/chapter/manutencao-do-branch-de-versoes)</span>
- <span style="text-decoration: underline;">[Fechamento do Branch e liberação das versões](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/chapter/fechamento-do-branch-e-liberacao-de-versoes)</span>

---

##### **Ponto inicial do processo**

Por se tratar de um processo cíclico, ou seja, o início do processo de gerenciamento do *branch* X é iniciado logo após a finalização do processo referente ao *branch* Y (sendo que Y = X - 1). O seu ponto inicial será sempre após a <span style="text-decoration: underline;">[finalização do fechamento do Branch da Versão](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/page/finalizacao-do-fechamento-do-branch-da-versao)</span> anterior, onde a dupla responsável pelo próximo *Branch* deverá providenciar a <span style="text-decoration: underline;">[abertura](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/chapter/abertura-do-branch-de-versoes)</span> do mesmo, repetindo sempre esse ciclo.

---

##### **Ponto final do processo**

A etapa final do gerenciamento do Branch da Versão será a liberação e <span style="text-decoration: underline;">[finalização do fechamento do Branch da Versão](https://wiki.supersoft.com.br/books/gerenciamento-do-branch-de-versao/page/finalizacao-do-fechamento-do-branch-da-versao)</span>, quando o mesmo poderá ser considerado como concluído, dando início à abertura do próximo *Branch* e repetindo o ciclo.

---

##### **Resultado esperado**

É esperado que com essa estruturação de *Trunk*, Branch de Versão e Branch por caso (pasta de trabalho de cada desenvolvedor, por caso) mantenha-se a integridade do código fonte do sistema no *Trunk* e que todas as correções/implementações necessárias não sejam realizadas no *Trunk*, evitando problemas e garantindo maior segurança nas liberações e entrega das versões aos clientes.