|
Documentação
Agende uma demoPlataforma
PlataformaMCPCLI
APIWorkflows
GuiasChangelog

Visão geral

  • @lingo.dev/cli

Primeiros passos

  • Início rápido
  • Configuração

Referência

  • lingo push
  • lingo pull
  • Outros comandos
  • lingo purge

Configuração

  • Controles de chave
  • Formatos
  • Idiomas

Guias

  • Adicionando um idioma
  • Traduções existentes
  • Retradução
  • Notas do tradutor
  • Execuções, estado e recuperação
  • CI/CD
  • Monorepos
  • Projetos grandes

Está procurando a versão anterior do CLI (v0)? Veja a documentação do CLI legado

lingo pull

Busca os outputs do push mais recente e os grava em disco, com detecção de conflitos em relação ao lockfile.

text
lingo pull [--force] [--dry-run]

Quando usar#

lingo push já grava os outputs quando a execução termina — então pull só é útil quando você não esperou (ou não pôde esperar) de forma síncrona:

  • Fechou o terminal no meio da tradução. Reabra, execute lingo pull — ele retoma de onde a execução parou.
  • Fazendo pull de outra máquina. O tradutor executa push no laptop; o CI / um colega de equipe executa pull no mesmo checkout, no mesmo engine, com as mesmas credenciais, e recebe os outputs.
  • Retomou o trabalho depois que a execução terminou, mas antes de push conseguir gravar. Oscilação de rede, processo encerrado — pull conclui o trabalho.

Como ele encontra a execução#

pull lê ~/.lingo/runs/<hash>.json, em que <hash> é derivado do caminho absoluto da raiz do projeto. O arquivo registra o último runId de push. Sem ele, pull retorna erro:

text
Error: No run state at ~/.lingo/runs/<hash>.json — run `lingo push` first so we
       know which run's outputs to pull.

Esse arquivo é específico de cada máquina e fica fora do repositório (consulte Configuration para entender o motivo).

Detecção de conflitos#

Antes de gravar cada destino, pull compara:

  • Hash do arquivo local em disco
  • Hash registrado em .lingo/lock.json como a última versão conhecida do servidor

Se forem iguais → não há edições locais, então é seguro sobrescrever. Se forem diferentes → existem edições locais; fazer pull descartaria essas alterações. pull aborta:

text
Error: 3 conflict(s) — rerun with --force

O lockfile é a única fonte de verdade aqui — ele rastreia o que o servidor gravou por último, não o conteúdo de origem. Edições manuais em arquivos traduzidos que você queira manter devem ser commitadas (para sobreviverem a pull) ou sobrescritas com --force (para serem substituídas).

Flags#

--force / -f#

Sobrescreve arquivos de destino locais que divergiram do lockfile. Use depois de revisar os conflitos e decidir que a versão do servidor é a canônica (por exemplo, quando outra pessoa fez push de uma atualização de glossário que deve ter prioridade).

workflow recomendado:

bash
git status                          # stash or commit local edits first
git stash                           # if you want to keep them aside
lingo pull --force
git stash pop                       # re-apply your edits, resolve conflicts manually

--dry-run#

Mostra o que pull faria sem tocar no sistema de arquivos:

bash
lingo pull --dry-run

Exibe quantos arquivos seriam gravados e quantos já estão em sincronia. Útil no CI para garantir que nada saiu do lugar.

Saída#

Sucesso:

text
✓ Pulled run run_a8c...: wrote 12 file(s), 4 already in sync.

Simulação:

text
Dry run complete. 16 file(s) already in sync.

Execução ainda não concluída:

text
Run run_a8c... is running, not pulling yet.

(pull não bloqueia execuções em andamento — execute novamente mais tarde ou use push da próxima vez, que espera.)

Casos extremos#

  • Nenhum push anterior. Erro como acima. Não existe o conceito de "fazer pull de traduções que existem em algum lugar no servidor" — pull sempre busca uma execução específica.
  • Estado da execução apontando para uma execução excluída/expirada. O engine retorna 404; pull reporta isso com clareza. Exclua ~/.lingo/runs/<hash>.json e execute push novamente.
  • Engine diferente em .lingo/config.json daquele em que a execução foi criada. Incompatibilidade de ID do engine — a CLI retorna erro com os IDs. Execute push novamente no engine atual.

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 5 dias·2 min de leitura