Fluxo de trabalho Git para desenvolvedores Kotlin: como não quebrar o projeto

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: Por que Git não é apenas "git push"

\n\n

Se você programa em Kotlin, sabe como essa linguagem é agradável: concisa, segura, moderna. Mas mesmo o código mais elegante se transforma em caos se a equipe não tiver um fluxo de trabalho Git claro. Você já tentou fazer merge de uma branch onde um desenvolvedor renomeou metade dos arquivos, outro refatorou as corrotinas e um terceiro acidentalmente enviou o `build.gradle.kts` com caminhos locais?

\n\n

O fluxo de trabalho Git para desenvolvedores Kotlin não são apenas regras chatas. É seu escudo contra conflitos, garantia de um `main` estável e uma forma de não gastar a segunda-feira desvendando "quem quebrou o quê". Neste artigo, vamos analisar um pipeline real: desde a configuração do `.gitignore` para Kotlin até verificações automáticas com Gradle e pre-commit hooks.

\n\n

Vamos organizar o repositório!

\n\n

1. Base: Configuração do repositório para Kotlin

\n\n

1.1. O .gitignore correto para Kotlin

\n\n

A primeira coisa que todos devem fazer é esquecer o copiar e colar de templates do GitHub. Em projetos Kotlin, existem pastas específicas que não devem ir para o repositório. Aqui está um conjunto mínimo essencial:

\n\n
# Kotlin & JVM\n*.class\n*.jar\n*.war\n*.ear\nbuild/\n!gradle/wrapper/gradle-wrapper.jar\n\n# IDE (IntelliJ IDEA)\n.idea/\n*.iml\n*.iws\nout/\n\n# OS\n.DS_Store\nThumbs.db\n\n# Gradle\n.gradle/\nlocal.properties\n
\n\n

Observe: excluímos explicitamente `.idea/` — isso salvará seus colegas de conflitos nas configurações da IDE. E `local.properties` (caminho para o SDK) é algo estritamente local.

\n\n

1.2. Git hooks: seu linter pessoal

\n\n

O fluxo de trabalho Git para desenvolvedores Kotlin é impensável sem pre-commit hooks. Eles são executados antes do commit ser criado. A ferramenta mais popular é o pre-commit com plugins para Kotlin.

\n\n

Exemplo de configuração `.pre-commit-config.yaml`:

\n\n
repos:\n  - repo: https://github.com/pre-commit/mirrors-ktlint\n    rev: v0.50.0\n    hooks:\n      - id: ktlint\n        args: ["--format"]\n\n  - repo: https://github.com/detekt/detekt\n    rev: v1.23.1\n    hooks:\n      - id: detekt\n
\n\n

Agora, antes de cada commit, o `ktlint` formatará o código e o `detekt` verificará possíveis bugs. Chega de "esqueci de rodar o linter"!

\n\n

2. Estratégia de ramificação: escolhendo seu workflow

\n\n

2.1. Git Flow — clássico para projetos grandes

\n\n

Para monolítos Kotlin ou projetos com lançamentos rígidos, o clássico Git Flow é adequado. Branches principais:

\n\n
    \n
  • main — apenas código estável que está em produção.
  • \n
  • develop — branch de integração para desenvolvimento.
  • \n
  • feature/* — cada nova funcionalidade.
  • \n
  • release/* — preparação para o lançamento (correção de bugs, atualização de versão).
  • \n
  • hotfix/* — correções urgentes em produção.
  • \n
\n\n

Exemplo para Kotlin: você está desenvolvendo uma nova função de processamento de corrotinas. Cria a branch feature/coroutine-flow, trabalha nela, depois faz merge em develop. Quando houver funcionalidades suficientes para um lançamento, cria release/2.1.0, corrige bugs lá e só então faz merge em main.

\n\n

2.2. GitHub Flow — para CI/CD e lançamentos rápidos

\n\n

Se você escreve um microsserviço em Ktor ou Spring Boot e faz deploys diariamente, o Git Flow será exagerado. Use o GitHub Flow:

\n\n
    \n
  • A branch main está sempre pronta para deploy.
  • \n
  • Cada tarefa — feature/nome.
  • \n
  • Após a conclusão — Pull Request, code review, testes automatizados, merge em main.
  • \n
  • Imediatamente após o merge — deploy (idealmente).
  • \n
\n\n

Perfeito para projetos Kotlin com boa cobertura de testes.

\n\n

2.3. Trunk-based — para os corajosos

\n\n

Trabalha em uma startup ou fazendo um projeto pessoal? O Trunk-based (todos committam em main com commits curtos) acelera o desenvolvimento, mas requer

Blogs

Book Recommendations