| Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior |
| pres:gerti:devops:informacoes:nomenclatura_commits [20/04/2026 11:36] – lvinicius | pres:gerti:devops:informacoes:nomenclatura_commits [20/04/2026 11:42] (atual) – [Automatizar o versionamento] lvinicius |
|---|
| Este artigo descreve o padrão que adotamos para realizar a nomenclatura dos commits em nossos projetos. | Este artigo descreve o padrão que adotamos para realizar a nomenclatura dos commits em nossos projetos. |
| |
| Adotamos o padrão [[https://www.conventionalcommits.org/pt-br/v1.0.0/|Conventional Commits]], o qual inicia o commit com um prefixo como ''<nowiki>fix:</nowiki>'', ''<nowiki>feat:</nowiki>'', ''<nowiki>docs:</nowiki>'' para identificar o tipo da mudança. | Adotamos o padrão [[https://www.conventionalcommits.org/pt-br/v1.0.0/|Conventional Commits]], o qual inicia o commit com um prefixo como ''%%fix:%%'', ''%%feat:%%'', ''%%docs:%%'' para identificar o tipo da mudança. |
| |
| É importante utilizar esse padrão pois os repositórios possuem (devem possuir) um [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/tree/main/templates/versioning|Job de Versionamento]] na Pipeline de CI/CD. Esse job gera automaticamente a tag da versão do repositório no padrão de [[:pres:gerti:devops:informacoes:versionamento_semantico|]] com base no nome dos commits. | Para mais informações, veja também o [[https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md|Guia de Commits do Angular]] que também usa o [[https://www.conventionalcommits.org/pt-br/v1.0.0/|Conventional Commits]]. |
| | |
| Para mais informações, veja também o [[https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md|Guia de Commits do Angular]] que também usa o [[https://www.conventionalcommits.org/pt-br/v1.0.0/|Conventional Commits]].{{:pres:gerti:devops:informacoes:20260420083356.png?nolink&1281x183}} | |
| |
| ===== Objetivos ===== | ===== Objetivos ===== |
| * Tornar o histórico de commits mais legível | * Tornar o histórico de commits mais legível |
| * Padronizar a comunicação entre a equipe | * Padronizar a comunicação entre a equipe |
| | |
| | ==== Automatizar o versionamento ==== |
| | |
| | É importante utilizar esse padrão pois os repositórios possuem (devem possuir) um [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/tree/main/templates/versioning|Job de Versionamento]] na Pipeline de CI/CD. Esse job lê o nome dos commits e gera automaticamente a tag da versão do repositório no padrão de [[:pres:gerti:devops:informacoes:versionamento_semantico|]]. |
| | |
| | {{:pres:gerti:devops:informacoes:20260420083356.png?nolink&1281x183}} |
| | |
| |
| ===== Sintaxe dos Commits ===== | ===== Sintaxe dos Commits ===== |
| |
| Esta é a sintaxe dos commits que o [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/tree/main/templates/versioning|Job de Versionamento]] está configurado para entender | Esta é a sintaxe dos commits que o [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/tree/main/templates/versioning|Job de Versionamento]] está configurado para entender |
| <code> | |
| |
| | <code> |
| <tipo>(<escopo opcional>): <descrição> [#<task redmine>] | <tipo>(<escopo opcional>): <descrição> [#<task redmine>] |
| |
| </code> | </code> |
| |
| * ''<nowiki><tipo></nowiki>'': **Obrigatório.** Refere-se ao tipo da alteração: se ele corrige um bug é um ''<nowiki>fix</nowiki>'', se adiciona um feature, é um ''<nowiki>feat</nowiki>''. Veja: [[#quais_20tipos_20de_20commits_20existem|Quais Tipos de Commits existem]] | * ''%%<tipo>%%'': **Obrigatório.** Refere-se ao tipo da alteração: se ele corrige um bug é um ''%%fix%%'', se adiciona um feature, é um ''%%feat%%''. Veja: [[#Quais%20Tipos%20de%20Commits%20existem?|Quais Tipos de Commits existem?]] |
| * ''<nowiki><escopo opcional></nowiki>'': **Opcional.** Descreve qual módulo do sistema foi alterado | * ''%%<escopo opcional>%%'': **Opcional.** Descreve qual módulo do sistema foi alterado |
| * ''<nowiki><descrição></nowiki>'': **Obrigatório.** Descrição do o que o seu commit faz. Inicie sempre com verbos no **presente do indicativo**, ex.: ''<nowiki>corrige</nowiki>'', ''<nowiki>altera</nowiki>'', ''<nowiki>implementa</nowiki>'', ''<nowiki>refatora</nowiki>'', ''<nowiki>adiciona</nowiki>''. | * ''%%<descrição>%%'': **Obrigatório.** Descrição do o que o seu commit faz. Inicie sempre com verbos no **presente do indicativo**, ex.: ''%%corrige%%'', ''%%altera%%'', ''%%implementa%%'', ''%%refatora%%'', ''%%adiciona%%''. |
| * ''<nowiki>[#<task redmine>]</nowiki>'': **Opcional.** Este é o ID da task do Redmine caso seu commit esteja relacionado. Ex: ''<nowiki>#39042</nowiki>'' | * ''%%[#<task redmine>]%%'': **Opcional.** Este é o ID da task do Redmine caso seu commit esteja relacionado. Ex: ''%%#39042%%'' |
| ==== Quais Tipos de Commits existem? ==== | ==== Quais Tipos de Commits existem? ==== |
| |
| Para o campo ''<nowiki><tipo></nowiki>'', há as seguintes opções: | Para o campo ''%%<tipo>%%'', há as seguintes opções: |
| |
| ^Tipo ^Descrição ^Versão ^Roda a pipeline?| | ^Tipo ^Descrição ^Versão ^Roda a pipeline?^ |
| |**build** |Mudanças que afetam o sistema de build (Dockerfile) ou dependências externas (requirements.txt)|Não altera |Sim | | |**build** |Mudanças que afetam o sistema de build (Dockerfile) ou dependências externas (requirements.txt)|Não altera |Sim | |
| |**ci** |Alterações na pipeline de CI/CD |Não altera |Sim | | |**ci** |Alterações na pipeline de CI/CD |Não altera |Sim | |
| |**docs** |Alterações na Documentação |Não altera |Não | | |**docs** |Alterações na Documentação |Não altera |Não | |
| |**feat** |Um feature novo (alterações que adicionam funcionalidade) |Aumenta a Minor|Sim | | |**feat** |Um feature novo (alterações que adicionam funcionalidade) |Aumenta a Minor|Sim | |
| |**fix** |Uma correção de bug (alteração que corrige funcionalidade) |Aumenta o Patch|Sim | | |**fix** |Uma correção de bug (alteração que corrige funcionalidade) |Aumenta o Patch|Sim | |
| |**perf** |Uma mudança no código que melhora a performance |Aumenta a Minor|Sim | | |**perf** |Uma mudança no código que melhora a performance |Aumenta a Minor|Sim | |
| |**refactor** |Uma mudança de código que nem corrige bugs, nem adiciona features. Apenas Refatoração. |Não altera |Sim | | |**refactor**|Uma mudança de código que nem corrige bugs, nem adiciona features. Apenas Refatoração. |Não altera |Sim | |
| |**test** |Adição de novos testes ou correção de testes existentes |Não altera |Sim | | |**test** |Adição de novos testes ou correção de testes existentes |Não altera |Sim | |
| |
| > **Dica:** Commits que começam ''<nowiki>docs:</nowiki>'' não disparam a pipeline. Caso não queria disparar a pipeline, pode usá-lo. | > **Dica:** Commits que começam ''%%docs:%%'' não disparam a pipeline. Caso não queria disparar a pipeline, pode usá-lo. |
| |
| ===== Exemplos ===== | ===== Exemplos ===== |
| Veja como exemplo um histórico de commits de um projeto fictício para entender como que | Veja como exemplo um histórico de commits de um projeto fictício para entender como que |
| |
| ^Versão Atual^Nome do Commit ^Nova Versão^Tipo de Alteração | | ^Versão Atual^Nome do Commit ^Nova Versão^Tipo de Alteração ^ |
| |1.2.4 |fix: Corrige a formatação do parser markdown |1.2.5 |Altera a versão de Patch| | |1.2.4 |fix: Corrige a formatação do parser markdown |1.2.5 |Altera a versão de Patch| |
| |1.2.5 |feat: Adiciona comando de pull para baixar novas páginas #37093 |1.3.0 |Altera a versão Minor | | |1.2.5 |feat: Adiciona comando de pull para baixar novas páginas #37093 |1.3.0 |Altera a versão Minor | |
| |1.3.0 |docs(comandos): Cria sessão explicando como usar o comando de pull|1.3.0 |Versão se mantem igual | | |1.3.0 |docs(comandos): Cria sessão explicando como usar o comando de pull|1.3.0 |Versão se mantem igual | |
| |
| ===== Como funciona? ===== | ===== Como funciona? ===== |
| - Encontrei um bug no Job de Versionamento. | - Encontrei um bug no Job de Versionamento. |
| - Corrigi o erro em minha máquina, testei e estou pronto para commitar. | - Corrigi o erro em minha máquina, testei e estou pronto para commitar. |
| - Como a alteração é uma **correção de bug** no módulo **versioning**, o commit se chamou: ''<nowiki>fix(versioning): corrige output do NEXT_VERSION</nowiki>''. | - Como a alteração é uma **correção de bug** no módulo **versioning**, o commit se chamou: ''%%fix(versioning): corrige output do NEXT_VERSION%%''. |
| - Fiz push. No Gitlab, o Job de Versionamento [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/jobs/23380|leu o nome do commit]] entendeu que é um ''<nowiki>fix</nowiki>'', e criou uma nova tag nesse commit. A tag anterior era ''<nowiki>3.0.0</nowiki>'', então ele aumentou para ''<nowiki>3.0.1</nowiki>''. | - Fiz push. No Gitlab, o Job de Versionamento [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/jobs/23380|leu o nome do commit]] entendeu que é um ''%%fix%%'', e criou uma nova tag nesse commit. A tag anterior era ''%%3.0.0%%'', então ele aumentou para ''%%3.0.1%%''. |
| - Após isso, o [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/tree/main/templates/versioning|Job de Versionamento]] também gerou um [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/releases#3.0.1|changelog]] com as alterações. | - Após isso, o [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/tree/main/templates/versioning|Job de Versionamento]] também gerou um [[https://gitsource.tce.go.gov.br/GER-TI/tce.kubernetes/tce.templates/-/releases#3.0.1|changelog]] com as alterações. |
| |
| ===== Dica: Iniciar descrição do commit com o presente do indicativo ===== | ===== Dica: Iniciar descrição do commit com o presente do indicativo ===== |
| |
| Por convenção, inicie a **Descrição** do commit com **verbos no presente do indicativo**. A descrição deve indicar o que o commit **faz**. Exemplos: | Por convenção, inicie a **Descrição** do commit com **verbos no presente do indicativo**. A descrição deve indicar o que o commit **faz**. Exemplos: |
| |
| * fix: **corrige** a formatação do parser markdown | * fix: **corrige** a formatação do parser markdown |
| * feat: **adiciona** comando de pull para baixar novas páginas | * feat: **adiciona** comando de pull para baixar novas páginas |
| |
| A intenção é facilitar a leitura do histórico de commits, e dos changelogs. | A intenção é facilitar a leitura do histórico de commits, e dos changelogs. |
| |
| Para informações completas da sintaxe dos commits e versionamento semântico: [[https://semver.org/|Versionamento Semântico]] e [[https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md|guia de commits do Angular]]. | Para informações completas da sintaxe dos commits e versionamento semântico: [[https://semver.org/|Versionamento Semântico]] e [[https://github.com/angular/angular/blob/main/contributing-docs/commit-message-guidelines.md|guia de commits do Angular]]. |
| |
| |
| |
| |