# 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](https://www.conventionalcommits.org/pt-br/v1.0.0/).
**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:
```bash
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:
```bash
python3 -m commit_msg_git_hook.setup
```
- Para Windows:
```bash
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.](src/commit_msg_git_hook/assets/commit-msg.config.json.png "commit-msg.config.json")
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](https://www.conventionalcommits.org/pt-br/v1.0.0/).
## 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.](src/commit_msg_git_hook/assets/Exemplo-mensagem-inválida.png "Exemplo de mensagem inválida")
### Exemplo de Mensagem Muito Longa
![Exemplo de mensagem muito longa.](src/commit_msg_git_hook/assets/Exemplo-mensagem-muito-longa.png "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.
```bash
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
Raw data
{
"_id": null,
"home_page": null,
"name": "commit-msg-git-hook",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "ci, commit-msg, git, git hook, git-hook, scan",
"author": null,
"author_email": "Lucio Meira David <lucio.meira@om30.com.br>",
"download_url": "https://files.pythonhosted.org/packages/bf/b1/034b8f2139e0ea08e5508b3b04248a5aab7ef28c109fdf6631a105a5c819/commit_msg_git_hook-0.7.0.tar.gz",
"platform": null,
"description": "# Commit Message Git Hook\n\n> *A set of tools to validate git Conventional Commit messages.*\n\nConjunto de ferramentas para validar mensagens de commit seguindo a especifica\u00e7\u00e3o **Conventional Commits**.\n\nVeja a especifica\u00e7\u00e3o [Conventional Commits](https://www.conventionalcommits.org/pt-br/v1.0.0/).\n\n**NOTA**: Somente commits novos s\u00e3o analisados.\n\n1. **commit_msg.py**: script principal\n - Verifica se uma mensagem de commit est\u00e1 dentro da especifica\u00e7\u00e3o, considerando a configura\u00e7\u00e3o em `commit-msg.config.json`.\n\n2. **scan_git.py**: script para ser usado em uma pipeline de Pull Request\n - A partir dos SHAs dos commits de uma PR, chama o `commit_msg.py` para cada uma das mensagens de commit.\n\n3. **setup.py**: script de configura\u00e7\u00e3o\n - Configura o git-hook commit-msg no reposit\u00f3rio do diret\u00f3rio atual.\n\n## Instru\u00e7\u00f5es de Instala\u00e7\u00e3o\n\n### Instalar do PyPI (Python Package Index)\n\nExecute o script abaixo para instalar a vers\u00e3o mais recente deste pacote:\n\n```bash\npip install commit-msg-git-hook --upgrade\n```\n\n### Configurar o Git Hook Local `commit-msg`\n\nExecute um dos comandos abaixo para criar o hook:\n\n- Para Linux e macOS:\n```bash\npython3 -m commit_msg_git_hook.setup\n```\n\n- Para Windows:\n```bash\npython -m commit_msg_git_hook.setup\n```\n\nEle executa as seguintes etapas:\n\n- L\u00ea e depois mostra o tipo do seu Sistema Operacional.\n - Encerra com uma mensagem de erro se o sistema operacional n\u00e3o for compat\u00edvel.\n- Cria um diret\u00f3rio para git-hooks, por padr\u00e3o `./.github/git-hooks`.\n - Cria subdiret\u00f3rios para cada um dos sistemas operacionais suportados.\n - Cria um arquivo de hook `commit-msg` para cada sistema operacional, se ele n\u00e3o existir.\n - Preenche-o com um script b\u00e1sico para chamar `commit_msg.main()`, deste pacote.\n - Se o sistema operacional for Linux ou macOS, torna o arquivo de hook execut\u00e1vel.\n- Define o caminho (relativo) dos hooks para o reposit\u00f3rio atual como o diret\u00f3rio respectivo ao tipo de sistema operacional (por exemplo: `./.github/git-hooks/linux`).\n- Cria um arquivo de configura\u00e7\u00e3o `commit-msg.config.json` se ele n\u00e3o existir.\n- Termina com uma mensagem de sucesso referenciando novamente o tipo do seu sistema operacional.\n\n\n## Instru\u00e7\u00f5es de Configura\u00e7\u00e3o\n\n![Captura de Tela do arquivo de configura\u00e7\u00e3o sem nenhuma customiza\u00e7\u00e3o.](src/commit_msg_git_hook/assets/commit-msg.config.json.png \"commit-msg.config.json\")\n\nPersonalize o arquivo de configura\u00e7\u00e3o `commit-msg.config.json` para atender \u00e0s necessidades do seu projeto.\n\nProvavelmente voc\u00ea desejar\u00e1 adicionar **escopos** para utilizar totalmente a especifica\u00e7\u00e3o [Conventional Commits](https://www.conventionalcommits.org/pt-br/v1.0.0/).\n\n## Uso B\u00e1sico\n\nDepois de configurar e adicionar os novos arquivos ao seu reposit\u00f3rio remoto **git**, seus colaboradores ter\u00e3o de executar as etapas de **instala\u00e7\u00e3o** e **configura\u00e7\u00e3o** novamente.\nMas, desta vez, a configura\u00e7\u00e3o ir\u00e1 apenas definir o caminho dos hooks e garantir que o arquivo `commit-msg` esteja execut\u00e1vel.\n\nCada vez que voc\u00ea fizer um commit, o hook ir\u00e1 verificar se sua mensagem est\u00e1 de acordo com a especifica\u00e7\u00e3o e as customiza\u00e7\u00f5es do projeto.\n\n### Exemplo de Mensagem Inv\u00e1lida\n![Exemplo de mensagem inv\u00e1lida.](src/commit_msg_git_hook/assets/Exemplo-mensagem-inv\u00e1lida.png \"Exemplo de mensagem inv\u00e1lida\")\n\n### Exemplo de Mensagem Muito Longa\n![Exemplo de mensagem muito longa.](src/commit_msg_git_hook/assets/Exemplo-mensagem-muito-longa.png \"Exemplo de mensagem muito longa\")\n\n## Como Editar Commits\n\nSe a sua branch ainda n\u00e3o estiver publicada ainda (n\u00e3o mesclada na `develop` nem na `main`, por exemplo),\nvoc\u00ea pode editar seus commits com o comando abaixo. O Git listar\u00e1 os \u00faltimos `n` commits e perguntar\u00e1 se voc\u00ea deseja manter ou\neditar cada um deles.\n\n```bash\ngit rebase -i HEAD~n\n```\n\nMais informa\u00e7\u00f5es em: https://docs.github.com/pt/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message\n\n## Cr\u00e9ditos\n\nEste pacote foi criado a partir de um tutorial do **Craicoverflow**.\n\nVeja o tutorial no link:\nhttps://dev.to/craicoverflow/enforcing-conventional-commits-using-git-hooks-1o5p",
"bugtrack_url": null,
"license": null,
"summary": "A set of tools to validate git Conventional Commit messages.",
"version": "0.7.0",
"project_urls": {
"Bug Tracker": "https://github.com/OM30/commit-msg-git-hook-package/issues",
"Homepage": "https://github.com/OM30/commit-msg-git-hook-package"
},
"split_keywords": [
"ci",
" commit-msg",
" git",
" git hook",
" git-hook",
" scan"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b42ebc04611d58a83aa00c766d94025f5cea238c725b2cd20394aaf13c6201d7",
"md5": "280932f15dcd2d9cddab7c08517da208",
"sha256": "8703e2c6cbac4771e53cdbbf70059ef62bf9836cce010cd66fc9a7674c1a1c93"
},
"downloads": -1,
"filename": "commit_msg_git_hook-0.7.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "280932f15dcd2d9cddab7c08517da208",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 67429,
"upload_time": "2024-08-30T20:12:54",
"upload_time_iso_8601": "2024-08-30T20:12:54.297443Z",
"url": "https://files.pythonhosted.org/packages/b4/2e/bc04611d58a83aa00c766d94025f5cea238c725b2cd20394aaf13c6201d7/commit_msg_git_hook-0.7.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bfb1034b8f2139e0ea08e5508b3b04248a5aab7ef28c109fdf6631a105a5c819",
"md5": "3c9c1762c2c492bbda4ce2d2a3137fb6",
"sha256": "7c47a345c89aab90e96448ea8e8e2e671176dbef5509adb2bd2e7fd4b1289205"
},
"downloads": -1,
"filename": "commit_msg_git_hook-0.7.0.tar.gz",
"has_sig": false,
"md5_digest": "3c9c1762c2c492bbda4ce2d2a3137fb6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 65736,
"upload_time": "2024-08-30T20:12:56",
"upload_time_iso_8601": "2024-08-30T20:12:56.666703Z",
"url": "https://files.pythonhosted.org/packages/bf/b1/034b8f2139e0ea08e5508b3b04248a5aab7ef28c109fdf6631a105a5c819/commit_msg_git_hook-0.7.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-30 20:12:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "OM30",
"github_project": "commit-msg-git-hook-package",
"github_not_found": true,
"lcname": "commit-msg-git-hook"
}