====== Padronização do Git ====== ===== Fluxo de Branches ===== Foi definido que o fluxo de branches utilizado para o desenvolvimento e manutenções de produtos de software será uma **adaptação do Git Flow**. O fluxo padrão do **Git Flow** é o apresentado na figura a seguir. {{:pres:gerti:padronizacao_git:git_flow.webp?768x374}} Com base no fluxo padrão do **Git Flow** teremos as seguintes **adaptações**: * Não serão utilizadas branches **release**. O uso de branches **release **será avaliado posteriormente. * Não será utilizada a branch **develop **em alguns sistemas onde existe um fluxo intenso de demandas urgentes, como por exemplo o eTCE-GO. Neste caso todas as branches serão criadas a partir da branch main. Posteriormente avaliaremos o uso da branch develop neste cenário. **Nomenclatura das branches:** * **main​:** branch principal e referência para implantação do produto de software em produção.​ * **develop​:** branch de desenvolvimento e referência para implantação do produto de software nos ambientes de teste e homologação.​ * **feature/nome-da-nova-funcionalidade-ou-melhoria​:** branch criada como espelho da **develop **e utilizada pelo desenvolvedor durante a codificação da nova funcionalidade ou melhoria de uma funcionalidade existente.​ * **bugfix/identificação-do-bug​:** branch criada como espelho da **develop **e utilizada pelo desenvolvedor durante a codificação da correção de bugs.​ * **hotfix/identificação-do-bug​:** branch criada como espelho da **main **e utilizada pelo desenvolvedor durante a codificação da correção de bugs que precisam ser corrigidos urgentemente.​ * **tag​:** marcação criada na branch **main **para identificar uma nova versão implantada em produção.​ Exemplo: 1.0.0​ ===== Versionamento ===== Foi definido que será aplicado o **versionamento semântico** para todo produto de software desenvolvido e mantido pelo tribunal. O padrão para a identificação de versão será como definido a seguir: * **MAJOR.MINOR.PATCH​** * **MAJOR:** incrementado para grandes mudanças, mudanças incompatíveis com versões anteriores ou uma referência para um conjunto de mudanças.​ * **MINOR:** incrementado para adicionar funcionalidades.​ * **PATCH:** incrementado para correções de bugs.​ * **Exemplos:** * **1.0.0:** primeira versão estável.​ * **1.1.0:** versão com novas funcionalidades compatíveis com a versão 1.0.0.​ * **1.1.1:** versão com correções de bugs compatíveis com a versão 1.1.0.​ * **2.0.0:** segunda versão com mudanças incompatíveis com a versão 1.0.0. ===== Changelog ===== O changelog é um registro, em um **documento padronizado**, de todas as mudanças realizadas em um produto de software ao longo do tempo. Este serve como histórico de inclusão de novas funcionalidades, correções de bugs e demais manutenções realizadas no software. Foi definido que deve ser criado um changelog para cada produto de software desenvolvido e mantido pelo tribunal. A cada novo incremento de versão o changelog deve ser atualizado. O changelog será inicialmente armazenado no **Git Source na raiz do projeto do produto de software**. O nome do arquivo será **changelog.md** e será preenchido com o padrão **Markdown**. **Os seguintes dados devem estar contidos no changelog:** * **Versão:** ​ número da versão, por exemplo, 2.1.3.​ * **Data:​** data da implantação da nova versão em produção.​ * **Descrição das Mudanças:** ​ uma lista detalhada das mudanças, organizadas pelas categorias a seguir. * **Novas Funcionalidades:** novas funcionalidades ou recursos incluídos.​ * **Correções:** correções de bugs, problemas e defeitos.​ * **Alterações:** mudanças em funcionalidades existentes.​ * **Melhorias:** melhorias de usabilidade, desempenho, otimizações, etc.​ * **Remoções:** funcionalidades ou recursos removidos.​ * **Segurança:** correções de vulnerabilidades de segurança. **Exemplo de preenchimento:** **{{:pres:gerti:padronizacao_git:exemplo_preenchimento_changelog.png?1250x921}}**