Skip to content

Configuração do GitWit

O GitWit utiliza um arquivo de configuração chamado .gitwit, localizado no diretório raiz do projeto — o mesmo onde está o diretório .git.

Esse arquivo define:

  • Regras de validação para commits.
  • Campos obrigatórios ou opcionais.
  • Escopos e tipos permitidos.
  • Formatação para commits e changelogs.

Esta página documenta todas as chaves disponíveis e como usá-las, com exemplos e valores padrão.

1. Estrutura básica do arquivo

A configuração é organizada em seções, cada uma com um propósito específico. O arquivo de configuração utiliza o formato YAML para definição das propriedades

📃 Gerar exemplo de configuração

Você pode gerar automaticamente um arquivo de exemplo executando:

bash
gitwit --config-example

Esse comando criará no diretório atual um .gitwit pré-preenchido com valores padrão, pronto para ser ajustado conforme suas necessidades.

Exemplo básico:

yaml
types:
  description: "Selecione o tipo de alteração"
  values:
    feat: "Nova funcionalidade"
    fix: "Correção de bug"

scope:
  type: list
  values:
    - core
    - api
    - cli

shortDescription:
  minLength: 5
  maxLength: 70

changelog:
  title: "Histórico de mudanças"
  types:
    feat: "Funcionalidades"
    fix: "Correções"
  showBreakingChanges: true

2. types - Tipos de commit

Define quais tipos de commit são permitidos e uma descrição para cada um.

yaml
types:
  description: "Selecione o tipo de alteração que você está realizando"
  values:
    feat: "Uma nova funcionalidade"
    fix: "Correção de um bug"
    docs: "Mudanças na documentação"
CampoObrigatórioTipoDescrição
descriptionNãoStringTexto auxiliar para exibição no wizard
valuesSimMapTipos de commit permitidos e suas respectivas descrições

💡 Boas práticas:

Use nomes curtos (máx. 10 caracteres) para os tipos.

Prefira termos reconhecidos, como feat, fix, docs, test, refactor.

2. scope - Escopo do commit

Controla o uso do escopo do commit: se é obrigatório, livre ou limitado a uma lista.

yaml
scope:
  description: "Especifique o escopo da mudança"
  required: false
  type: list
  values:
    - core
    - cli
    - api
CampoObrigatórioTipoPadrãoDescrição
descriptionNãoString-Texto auxiliar para exibição no wizard
requiredNãoBooleanfalseDefine se o escopo é obrigatório
typeSimStringtextPode ser text (campo livre) ou list (escolha entre valores fixos)
valuesCondicionalList-Lista de escopos válidos (obrigatório quando type: list)

⚠️ Aviso:

Se required: true e type: list, o usuário será obrigado a escolher um dos escopos definidos.

3. shortDescription - Descrição curta do commit

Define regras para o campo obrigatório de descrição curta do commit.

yaml
shortDescription:
  description: "Forneça um breve resumo"
  minLength: 5
  maxLength: 70
CampoObrigatórioTipoPadrãoDescrição
descriptionNãoString-Texto auxiliar para exibição no wizard
minLengthNãoInt1Mínimo de caracteres permitidos
maxLengthNãoInt72Máximo de caracteres permitidos

4. longDescription - Descrição longa do commit

Habilita um campo adicional para detalhamento do commit.

yaml
longDescription:
  enabled: true
  description: "Detalhes adicionais"
  required: false
  minLength: 20
  maxLength: 100
CampoObrigatórioTipoPadrãoDescrição
enabledNãoBooleanfalseAtiva o campo de descrição longa
descriptionNãoString-Texto auxiliar para exibição no wizard
requiredNãoBooleanfalseDefine se é obrigatório
minLengthNãoInt0Mínimo de caracteres permitidos
maxLengthNãoInt100Máximo de caracteres permitidos

5. breakingChanges - Mudanças críticas

Permite destacar mudanças que quebram compatibilidade.

yaml
breakingChanges:
  enabled: true
  description: "Liste as mudanças significativas"
CampoObrigatórioTipoPadrãoDescrição
enabledNãoBooleanfalseAtiva o campo para breaking changes
descriptionNãoString-Texto auxiliar para exibição no wizard

6. changelog - Geração de changelog

Configura como o changelog será montado.

yaml
changelog:
  title: "Changelog"
  types:
    feat: "Novas funcionalidades"
    fix: "Correções"
  showOtherTypes: true
  showBreakingChanges: true
  ignored:
    - chore
CampoObrigatórioTipoPadrãoDescrição
titleNãoString"Changelog"Título usado no topo do changelog gerado
typesSimMap-Mapeia tipos de commit para seções do changelog
showOtherTypesNãoBooleantrueMostra tipos não listados em types
showBreakingChangesNãoBooleanfalseInclui seção de breaking changes
ignoredNãoList-Tipos de commit ignorados na geração do changelog

7. changelog.format - Templates de exibição

Controla o template de exibição dos commits no changelog.

yaml
format:
  sectionTemplate: "{scope}: {description} ({shortHash})"
  breakingChangesTemplate: "{type} ({scope})!: {description} ({shortHash})"
  otherTypesTemplate: "{type} ({scope}): {description} ({shortHash})"
  defaultTemplate: "{type}: {description}"
CampoObrigatórioTipoDescrição
sectionTemplateNãoStringTemplate para tipos listados em types
breakingChangesTemplateNãoStringTemplate específico para breaking changes
otherTypesTemplateNãoStringTemplate para tipos não listados
defaultTemplateNãoStringTemplate genérico como fallback

Variáveis suportadas nos templates:

  • {type}: tipo do commit (feat, fix, etc.)
  • {scope}: escopo definido
  • {description}: descrição curta
  • {hash}: hash completo do commit
  • {shortHash}: primeiros 7 caracteres do hash
  • {breakingChanges}: tag de breaking change
  • {author}: autor do commit
  • {date}: data e hora do commit

Exemplos de configuração

A seguir, você encontrará dois modelos prontos para uso, cada um com um estilo próprio:

  • Exemplo Básico — ideal para quem está começando ou deseja manter o padrão de commits simples e objetivo.
  • Exemplo com Emojis — perfeito para quem quer adicionar expressividade e facilitar a identificação visual dos commits no histórico.

Use o que melhor se adapta ao seu fluxo de trabalho — ou combine ideias para criar sua própria configuração personalizada.

Lançado sob a Licença Apache.