Git Workflow — Meu PACS Cloud
Este projeto segue Git Flow simplificado: duas branches permanentes (main e develop) e branches temporárias por feature/fix. O objetivo é separar o que está em desenvolvimento do que está em produção, com rastreabilidade clara de cada release.
1. Filosofia
main | develop | |
|---|---|---|
| Papel | Versão estável — última release em produção | Versão de trabalho — integração contínua de novas features |
| Quem mexe | Ninguém direto — só via PR de develop | Ninguém direto — só via PR de branches temporárias |
| Quando atualiza | Em releases (marcos estáveis) | Diariamente |
| Deploy | Produção | Homolog |
main nem em develop. Todo trabalho nasce em uma branch temporária, vira um PR, é revisado, e só então entra.
2. Branches permanentes
main
Contém a versão estável em produção. Cada commit em main é um release — um ponto consistente onde tudo funciona end-to-end.
Recebe apenas PRs de develop, geralmente em lotes coerentes (ex.: “sistema de laudos completo”, “viewer + autenticação OHIF”).
develop
Contém o trabalho em andamento. Recebe PRs de branches temporárias conforme features/fixes são finalizados.
Deve estar sempre em estado rodável — testes básicos passando, sem quebrar funcionalidades existentes. Serve de base para cortar novas branches e para deploy em homolog.
3. Branches temporárias
Convenção de nomes
| Prefixo | Uso | Exemplo |
|---|---|---|
feat/ | Nova funcionalidade | feat/rbac-laudos |
fix/ | Correção de bug | fix/navbar-preview-overlap |
infra/ | Docker, CI, deploy, configs | infra/nginx-cors-proxy |
docs/ | Só documentação | docs/runbook-migration |
refactor/ | Refatoração sem mudança de comportamento | refactor/report-controller |
docker, webhook, jwt) em inglês.
Ciclo de vida
Branches temporárias são curtas — idealmente horas a poucos dias. Quanto mais tempo uma branch fica aberta, mais difícil o merge e maior o risco de conflito. Se o escopo crescer, divida em várias branches menores. Depois do merge, a branch pode ser deletada (local e remoto).4. Fluxo: adicionar uma nova feature
Durante o trabalho
- Commits frequentes e pequenos — mais fácil de revisar e reverter
- Se
developavançou enquanto você trabalhava, rebase na sua branch:Resolva conflitos, rode testes, dê push forçado (--force-with-lease) só na sua branch (nunca emmain/develop)
5. Fluxo: corrigir um bug
Mesmo padrão da feature, com prefixofix/:
hotfix/ a partir de main, PR direto para main e também para develop (para não perder o fix no trunk).
6. Padrão de mensagens de commit
| Tipo | Quando |
|---|---|
Feat: | Nova funcionalidade |
Fix: | Correção de bug |
Docs: | Só documentação |
Refactor: | Refatoração sem mudança de comportamento |
Infra: | Docker, CI, deploy, configs |
Test: | Só testes |
Chore: | Manutenção (bump de dependência, etc.) |
wip,fix stuff,updates— mensagens vagas- Commits gigantes com 10 arquivos e título genérico
- Commits misturando tipos (ex.: feat + docs + refactor no mesmo)
7. Release: PR develop → main
Quando develop acumulou um conjunto coerente de features/fixes estáveis e testados, é hora de promover para main.
Checklist antes de abrir o PR:
- Tudo em
developestá pushado (sem commits locais pendentes) - Deploy em homolog rodando a versão de
developsem erros - Fluxos críticos validados em homolog:
- Login, logout, refresh de JWT
- Ingestão DICOM (estudo chega, thumbnail gerado, série indexada)
- Viewer OHIF abre com token temporário
- Fluxo de laudos: rascunho → finalizar → corrigir → exportar PDF
- RBAC: cada role acessa só o que deve
- Migrations rodando sem erros no ambiente de homolog
- Documentação alinhada (
README,ARCHITECTURE,ONBOARDING,RUNNING)
main, considere taggear a release:
8. Boas práticas
✅ Faça- Commits pequenos, focados, com mensagem descritiva
- Rebase em
developantes de abrir PR (mantém histórico linear) - Revise o diff antes de pushar (
git diff --cached) - Teste localmente antes do push
- Delete branches temporárias após merge
git push --forceemmain/develop(pode apagar trabalho alheio)--no-verifypara pular hooks (eles existem por motivo)- Misturar muitas mudanças não relacionadas no mesmo commit
- Commits com segredos (
.env, tokens, credenciais) - Merge de
developpara a sua branch pra “atualizar” — userebase
9. Comandos de referência rápida
10. Quando fugir do fluxo
Git Flow funciona pra times pequenos com releases programadas — é o nosso caso hoje. Se o projeto crescer para:- Múltiplos devs em features paralelas independentes — vale olhar trunk-based development + feature flags
- Deploys múltiplos por dia — Git Flow atrasa; trunk-based é melhor
- Manter versões antigas em paralelo (ex.: v1 e v2 simultâneos) — adicionar branches
release/1.x,release/2.x
