Otimizando o fluxo de trabalho: explorando Git Hooks
@allythy
Instalação
O Git é um sistema de controle de versão distribuído, que registra alterações em um arquivo ou conjunto de arquivos ao longo do tempo para que você possa lembrar versões específicas mais tarde.
sudo apt-get install git
https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F
Hook em uma tradução literal é gancho, em programação são usados para alterar ou acrescentar algum comportamento, interceptando chamadas de função, mensagens ou eventos passados entre componentes.
O Git usa os hooks para acionar ações em determinados pontos da execução do git
O Git, nessa situação, se compara ao chef, onde todas as receitas e ingredientes são gerenciados, permitindo que os subchefs colaborem e compartilhem suas criações.
Vamos considerar os hooks do Git como as etapas de verificação de qualidade durante o processo de preparação dos pratos.
git (chef)
pre-commit (chef de qualidade)
pre-push (chef de apresentação)
Image by <a href="https://www.freepik.com/free-vector/hand-drawn-chef-drawingillustration_69225398.htm#from_view=detail_serie">Freepik</a>
Os hooks são armazenados em um subdiretório no Git. O padrão é:
.git/hooks
applypatch-msg.sample pre-applypatch.sample pre-push.sample update.sample
commit-msg.sample pre-commit.sample pre-rebase.sample
fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample
post-update.sample prepare-commit-msg.sample push-to-checkout.sample
Podemos usar qualquer linguagem de script, desde que ela possa ser executada como executável
#!/usr/bin/env node
console.log("hello hook world")
#!/usr/bin/env node
import { readFileSync } from 'fs';
const commitMsgFile = process.argv[2];
const commitMsg = readFileSync(commitMsgFile, 'utf-8').trim();
const allowedPrefix = 'feat';
function startsWithAllowedPrefix(commitMsg) {
const lowerCaseMsg = commitMsg.toLowerCase();
return lowerCaseMsg.startsWith(allowedPrefix);
}
if (!startsWithAllowedPrefix(commitMsg)) {
console.error(`ERRO: A mensagem de commit deve começar com '${allowedPrefix}'`);
process.exit(1);
} else {
process.exit(0);
}
Instalação
Facilita a execução do git hooks no javacript
npm install --save-dev husky
npx husky init
Instalação
Algumas ferramentas trabalham em conjunto com husky
npm install --save-dev eslint prettier lint-staged @commitlint/{cli,config-conventional}
prettier - Formatador javascrit
lint-staged - Executa o lint em arquivos na stage do git
commitlint - Lint das mensagens commits
Instalação
Um gerador de site estático. Ele fornece recursos de documentação fácil e simples.
npx create-docusaurus@latest my-website classic