O GitFlow é um gerenciador e instalador de hooks (também chamados de plugins), projetado para automatizar tarefas relacionadas a versionamento, documentação, CI/CD (Integração Contínua e Entrega Contínua) e outras atividades do fluxo de trabalho de desenvolvimento. O projeto utiliza uma abordagem modular, permitindo a criação e integração de hooks personalizados para atender às necessidades específicas de cada equipe ou projeto.
Além disso, o GitFlow oferece um ambiente de desenvolvimento robusto e isolado, construído com o Vagrant, que garante consistência e compatibilidade entre diferentes sistemas operacionais. Isso facilita o desenvolvimento e teste de hooks sem interferir no ambiente local do desenvolvedor.
O objetivo principal do GitFlow é:
-
Fornecer um Gerenciador de Hooks:
-
Facilitar a instalação, remoção, ativação e desativação de hooks.
-
Permitir a criação e uso de hooks personalizados.
-
-
Ser um Repositório de Hooks:
-
Oferecer um catálogo de hooks prontos para uso.
-
Promover a extensibilidade do sistema com novos hooks.
-
-
Garantir Consistência no Ambiente de Desenvolvimento:
-
Utilizar o Vagrant para criar uma máquina virtual (VM) com todas as dependências necessárias.
-
Isolar o ambiente de desenvolvimento, evitando conflitos e problemas de compatibilidade.
-
-
Facilitar o Desenvolvimento Colaborativo:
-
Prover um ambiente padronizado para todos os colaboradores.
-
Simplificar o processo de teste e depuração de hooks.
-
-
Gerenciador de Hooks:
- Instalação e remoção de hooks.
Ativação e desativação de hooks.
-
Repositório de Hooks:
-
Catálogo de hooks disponíveis para download e uso.
-
Suporte para hooks personalizados.
-
-
Ambiente de Desenvolvimento Isolado:
-
Configuração simplificada com Vagrant.
-
Compatibilidade multiplataforma (Windows, macOS, Linux).
-
O GitFlow Hook Manager é uma ferramenta para gerenciar hooks (ganchos) Git de forma modular. Ele permite instalar, desinstalar, reinstalar e configurar hooks personalizados para automatizar tarefas no fluxo de trabalho de desenvolvimento.
O GitFlow Hook Manager suporta os seguintes comandos:
-
Instalar um Hook:
gitflow install <nome-do-hook>
Exemplo:
gitflow install doc-update-hook
-
Desinstalar um Hook:
gitflow uninstall <nome-do-hook>
Exemplo:
gitflow uninstall pre-commit
-
Reinstalar um Hook:
gitflow reinstall <nome-do-hook>
Exemplo:
gitflow reinstall doc-update-hook
-
Listar Hooks Disponíveis:
gitflow list
-
Configurar um Hook:
gitflow config <nome-do-hook>
Exemplo:
gitflow config doc-update-hook
-
Exibir Ajuda:
gitflow --help
-
Exibir Versão:
gitflow --version
-
--force: Força a instalação ou desinstalação de um hook, mesmo que já esteja instalado ou não exista. Exemplo:gitflow install doc-update-hook --force
-
--help: Exibe a mensagem de ajuda com todos os comandos e opções disponíveis. -
--version: Exibe a versão atual do GitFlow Hook Manager.
-
Git: O GitFlow Hook Manager deve ser executado em um repositório Git válido. Certifique-se de que o diretório atual seja um repositório Git.
-
Permissões: Alguns comandos podem exigir permissões de administrador (sudo) para instalar ou desinstalar hooks.
Download GitFlow Debian Package
sudo apt-get update
sudo dpkg -i gitflow_*_all.deb
sudo apt-get install -f
O ambiente de desenvolvimento pode ser configurado de duas maneiras:
- Prós:*
- Sem necessidade de software adicional (Vagrant, VirtualBox).
- Acesso direto aos arquivos do projeto.
- Contras:*
- Requer configuração manual do ambiente.
- Risco CRÍTICO de conflitos com outras ferramentas e dependências.
- Dificuldade em reproduzir o ambiente em outras máquinas.
- Instruções:*
git clone git@github.com:GustavoRaposo/doc_automation.git
cd gitflow
sudo apt-get install -y build-essential devscripts debhelper
./scripts/build.sh
- Prós:*
- Ambiente isolado e consistente.
- Fácil configuração e reprodução.
- Segurança contra danos ao sistema hospedeiro.
- Contras:*
- Requer instalação do Vagrant e VirtualBox.
- Pode ser mais lento que o desenvolvimento na máquina raiz.
- Instruções:*
Antes de começar, certifique-se de ter instalado em sua máquina:
- VirtualBox (versão mais recente)
- Vagrant (versão mais recente)
Início Rápido
- Clone o repositório:
git clone https://github.com/yourusername/gitflow-dev.git
cd gitflow-dev- Inicie o ambiente de desenvolvimento:
vagrant up- Conecte-se à máquina virtual:
vagrant sshEspecificações da VM
- Ubuntu 22.04 LTS
- 2GB de RAM
- 2 núcleos de CPU
- Configuração de rede isolada
- Acesso restrito a dispositivos
- Ferramentas de desenvolvimento dedicadas
Configurando Integração com VS Code
- Gere uma chave SSH na VM:
vagrant ssh
ssh-keygen -t rsa -b 4096
cat ~/.ssh/id_rsa.pub- Adicione a chave à configuração SSH do VS Code:
# Na sua máquina host, edite ~/.ssh/config
Host gitflow-dev
HostName localhost
User vagrant
Port 2222
IdentityFile ~/.ssh/gitflow_dev_key
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentitiesOnly yes
LogLevel FATAL- Conecte usando VS Code:
- Instale a extensão "Remote - SSH"
- Clique em Remote Explorer
- Selecione "gitflow-dev" da lista de hosts
Este ambiente de desenvolvimento fornece:
- ✅ Gerenciamento isolado de pacotes
- ✅ Acesso restrito a dispositivos
- ✅ Acesso controlado à rede
- ✅ Espaço de desenvolvimento separado
- ✅ Ambiente de build limpo
Verifique o status do isolamento:
check-isolationvagrant destroy -f
vagrant upvagrant ssh
sudo apt-get update
sudo apt-get upgrade- Iniciar VM:
vagrant up - Parar VM:
vagrant halt - Excluir VM:
vagrant destroy - Recarregar VM:
vagrant reload
Se encontrar problemas de permissão:
# Dentro da VM
chmod +x scripts/*.sh
sudo chown -R vagrant:vagrant ~/gitflow- O ambiente de desenvolvimento está isolado do seu sistema host
- Todo desenvolvimento deve ser feito dentro da VM
- Não desabilite recursos de segurança no Vagrantfile
- Mantenha VirtualBox e Vagrant atualizados
As dependências do projeto variam dependendo do método de desenvolvimento escolhido. Consulte a documentação específica para cada método para obter a lista completa de dependências.
cd ~/gitflow
./scripts/build.shcd ~/gitflow
./scripts/test.sh- Crie o diretório do plugin:
mkdir -p plugins/community/nome-do-seu-plugin- Copie os arquivos de template:
cp -r plugins/templates/basic/* plugins/community/nome-do-seu-plugin/- Implemente a lógica do seu plugin no diretório events.
- Verifique as permissões dos scripts
- Confirme se todas as dependências estão instaladas
- Garanta a estrutura correta de diretórios
- Verifique a configuração SSH
- Verifique o redirecionamento de porta
- Regenere as chaves SSH se necessário
🚧🚧🚧