Documentação para Padrões de Commit e Nomeação de Branches
Este documento estabelece os padrões de commit e nomeação das branches do projeto, com o objetivo de garantir consistência e rastreabilidade no histórico de commits e branches. Serão seguidos os padrões Conventional Commits (inspirados nas convenções do Angular) para os commits e um padrão específico para a nomeação de branches, com vinculação de commits e branches às issues para facilitar o monitoramento de mudanças e o desenvolvimento colaborativo.
1. Padrões de Commit do grupo
1.1 Estrutura Geral dos Commits
Todos os commits devem seguir o formato abaixo:
<tipo>(<escopo>): <descrição>
<linha em branco>
[Opcional: corpo do commit]
<linha em branco>
[Opcional: rodapé]
Exemplo de commit:
feat(auth): adiciona autenticação com OAuth2
Implementa autenticação utilizando OAuth2 para melhorar a segurança dos usuários.
Closes #42
1.2 Elementos do Commit
- Tipo: Define o tipo de mudança no código.
- Escopo: Especifica a área afetada pelo commit.
- Descrição: Explica brevemente a mudança (máximo de 72 caracteres).
- Corpo (Opcional): Expande a descrição com detalhes adicionais.
- Rodapé (Opcional): Inclui referências a issues ou notas adicionais, usando
Closes #<número_da_issue>
ouRefs #<número_da_issue>
para associar o commit a uma issue.
1.3 Tipos de Commit
Tipo | Descrição |
---|---|
feat |
Para novos recursos ou funcionalidades. |
fix |
Para correção de bugs. |
docs |
Atualizações na documentação. |
style |
Alterações de estilo ou formatação que não afetam a funcionalidade (ex.: espaço, vírgula). |
refactor |
Alterações no código que não afetam sua funcionalidade ou comportamento externo. |
test |
Adição ou correção de testes. |
chore |
Atualizações em tarefas de build, configurações, dependências, etc., que não afetam o código. |
perf |
Alterações de desempenho ou melhorias de performance. |
ci |
Modificações nos arquivos de configuração de integração contínua. |
revert |
Reversão de um commit anterior. |
1.4 Escopo
O escopo especifica a área afetada pelo commit e deve indicar qual módulo, função ou componente foi modificado. Utilizar escopos bem definidos torna o histórico de commits mais legível e organizado.
Regras para Definir o Escopo
- Módulo ou Componente: Utilize o nome do módulo, componente, ou serviço principal que foi modificado. Exemplo:
auth
,user
,routes
,dashboard
,ui
. - Função ou Classe: Quando a alteração é específica a uma função ou classe dentro de um módulo, especifique o nome dela. Exemplo:
login-service
oubutton
. - Arquivo Específico: Se há mais de um arquivo em uma pasta e a alteração se aplica apenas a um arquivo específico, inclua o nome do arquivo no escopo.
- Consistência: Mantenha o uso de escopos consistente ao longo do projeto para evitar ambiguidades. Sempre que possível, utilize o mesmo nome para o mesmo módulo ou componente.
Exemplo de commit:
1. Módulo ou Componente
feat(routes): adiciona endpoint para recuperação de senha
Implementa endpoint `/main/routes` para envio de email de recuperação de senha.
Refs #58
2. Função ou Classe
feat(login-service): adiciona suporte a autenticação multifatorial
Implementa verificação adicional para autenticação, permitindo múltiplos fatores.
Closes #102
3. Arquivo Específico
feat(protocols): atualiza protocolos de autenticação de usuário
Refatora e ajusta os protocolos de autenticação de usuário no arquivo protocols.ts para atender a novos requisitos de segurança.
Refs #74
1.5 Vinculação de Commits com Issues
Para garantir rastreabilidade, todos os commits que resolvem ou estão relacionados a uma issue devem incluir referências no rodapé da mensagem de commit, usando palavras-chave específicas para identificar a relação.
Sintaxe para Vinculação de Commits
No rodapé do commit, use a seguinte estrutura:
<palavra-chave> #<número_da_issue>
Palavras-chave Permitidas
Palavra-chave | Descrição |
---|---|
Closes |
Indica que o commit resolve completamente a issue e, portanto, a fecha automaticamente. |
Fixes |
Sinônimo de Closes , indicando resolução da issue. |
Refs |
Indica que o commit está relacionado à issue, mas não a resolve ou fecha. |
Regras Importantes para Vinculação
- Sempre Vincule: Todo commit relacionado a uma issue deve incluir uma referência, seja para fechamento ou apenas relação.
- Uma Issue por Commit: Em geral, cada commit deve referenciar uma única issue para manter a rastreabilidade clara.
- Rodapé: A referência à issue deve estar no rodapé da mensagem de commit, após uma linha em branco.
2. Padrões de Nomeação de Branches
Para organizar o desenvolvimento e facilitar a rastreabilidade das mudanças, cada branch deve ser vinculada a uma issue, seguindo o padrão descrito a seguir.
2.1 Estrutura Geral das Branches
O nome de cada branch deve seguir o formato:
<origem>-<número_da_issue>/<tipo>/<descrição_curta>
Exemplo de nome de branch:
back-42/feat/autenticacao-oauth
2.2 Elementos da Nomeação de Branches
- Origem (Opcional): Indica se a branch irá modificar alguma funcionalidade do frontend (
front
) ou do backend (back
). - Número da Issue: Vincula a branch a uma issue específica para facilitar o rastreamento.
- Tipo: Indica o tipo de trabalho realizado na branch.
- Descrição Curta: Um resumo breve e direto da tarefa em execução na branch.
2.3 Tipos de Branch
Tipo | Descrição |
---|---|
feat |
Para novas funcionalidades. |
fix |
Para correção de bugs. |
docs |
Para documentação. |
style |
Para ajustes de estilo ou formatação. |
refactor |
Para refatoração de código. |
2.4 Exemplo de Nomes de Branch
Para a issue #50, que requer a criação de um novo formulário de login com validação básica:
- Crie a branch com o nome adequado:
front-50/feat/cria-formulario-login
- Realize um commit seguindo o padrão convencionado:
``` feat(auth): cria formulário de login com validação básica
Adiciona um novo formulário de login com campos de validação para email e senha.
Closes #50 ```
3. Boas Práticas Gerais
- Commits Frequentes: Realize commits sempre que finalizar uma pequena tarefa para facilitar o rastreamento e revisão do progresso.
- Commit Atômico: Cada commit deve ser atômico e focado em uma única tarefa ou correção, evitando mudanças diversas em um mesmo commit.
- Nome de Branch Curto e Claro: Utilize descrições curtas e objetivas ao nomear suas branches.
- Vinculação de Commits e Branches às Issues: Sempre que possível, associe commits e branches às issues para garantir rastreabilidade e documentação adequada das alterações.