Skip to main content

A set of tools to validate git Conventional Commit messages.

Project description

Commit Message Git Hook

A set of tools to validate git Conventional Commit messages.

Conjunto de ferramentas para validar mensagens de commit seguindo a especificação Conventional Commits.

Veja a especificação Conventional Commits.

NOTA: Somente commits novos são analisados.

  1. commit_msg.py: script principal

    • Verifica se uma mensagem de commit está dentro da especificação, considerando a configuração em commit-msg.config.json.
  2. scan_git.py: script para ser usado em uma pipeline de Pull Request

    • A partir dos SHAs dos commits de uma PR, chama o commit_msg.py para cada uma das mensagens de commit.
  3. setup.py: script de configuração

    • Configura o git-hook commit-msg no repositório do diretório atual.

Instruções de Instalação

Instalar do PyPI (Python Package Index)

Execute o script abaixo para instalar a versão mais recente deste pacote:

pip install commit-msg-git-hook --upgrade

Configurar o Git Hook Local commit-msg

Execute um dos comandos abaixo para criar o hook:

  • Para Linux e macOS:
python3 -m commit_msg_git_hook.setup
  • Para Windows:
python -m commit_msg_git_hook.setup

Ele executa as seguintes etapas:

  • Lê e depois mostra o tipo do seu Sistema Operacional.
    • Encerra com uma mensagem de erro se o sistema operacional não for compatível.
  • Cria um diretório para git-hooks, por padrão ./.github/git-hooks.
    • Cria subdiretórios para cada um dos sistemas operacionais suportados.
    • Cria um arquivo de hook commit-msg para cada sistema operacional, se ele não existir.
      • Preenche-o com um script básico para chamar commit_msg.main(), deste pacote.
      • Se o sistema operacional for Linux ou macOS, torna o arquivo de hook executável.
  • Define o caminho (relativo) dos hooks para o repositório atual como o diretório respectivo ao tipo de sistema operacional (por exemplo: ./.github/git-hooks/linux).
  • Cria um arquivo de configuração commit-msg.config.json se ele não existir.
  • Termina com uma mensagem de sucesso referenciando novamente o tipo do seu sistema operacional.

Instruções de Configuração

Captura de Tela do arquivo de configuração sem nenhuma customização.

Personalize o arquivo de configuração commit-msg.config.json para atender às necessidades do seu projeto.

Provavelmente você desejará adicionar escopos para utilizar totalmente a especificação Conventional Commits.

Uso Básico

Depois de configurar e adicionar os novos arquivos ao seu repositório remoto git, seus colaboradores terão de executar as etapas de instalação e configuração novamente. Mas, desta vez, a configuração irá apenas definir o caminho dos hooks e garantir que o arquivo commit-msg esteja executável.

Cada vez que você fizer um commit, o hook irá verificar se sua mensagem está de acordo com a especificação e as customizações do projeto.

Exemplo de Mensagem Inválida

Exemplo de mensagem inválida.

Exemplo de Mensagem Muito Longa

Exemplo de mensagem muito longa.

Como Editar Commits

Se a sua branch ainda não estiver publicada ainda (não mesclada na develop nem na main, por exemplo), você pode editar seus commits com o comando abaixo. O Git listará os últimos n commits e perguntará se você deseja manter ou editar cada um deles.

git rebase -i HEAD~n

Mais informações em: https://docs.github.com/pt/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message

Créditos

Este pacote foi criado a partir de um tutorial do Craicoverflow.

Veja o tutorial no link: https://dev.to/craicoverflow/enforcing-conventional-commits-using-git-hooks-1o5p

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

commit_msg_git_hook-0.6.1.tar.gz (65.4 kB view hashes)

Uploaded Source

Built Distribution

commit_msg_git_hook-0.6.1-py3-none-any.whl (67.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page