|
Documentação
Marcar uma demonstraçãoPlataforma
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

  • Controlos de chaves
  • Formatos
  • Idiomas

Guias

  • Adicionar um idioma
  • Traduções existentes
  • Retradução
  • Notas de tradução
  • Execuções, estado e recuperação
  • CI/CD
  • Monorepos
  • Projetos de grande escala

Está à procura da CLI anterior (v0)? Consulte a documentação da CLI anterior

lingo pull

Obtém os resultados do push mais recente e escreve-os em disco, com deteção de conflitos face ao ficheiro de bloqueio.

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

Quando utilizar#

lingo push já escreve os resultados quando a execução termina — por isso, pull só é útil quando não esperou (ou não pôde esperar) de forma síncrona:

  • Fechou o terminal a meio da tradução. Reabra-o, execute lingo pull — retoma a partir do ponto onde a execução ficou.
  • A fazer pull a partir de outra máquina. O tradutor executa push no portátil; o CI / um colega de equipa executa pull no mesmo checkout, no mesmo motor, com as mesmas credenciais, e obtém os resultados.
  • Retomou o trabalho depois de a execução terminar, mas antes de push conseguir escrever. Uma falha momentânea de rede, processo terminado à força — pull conclui o processo.

Como encontra a execução#

pull lê ~/.lingo/runs/<hash>.json, onde <hash> é derivado do caminho absoluto da raiz do projeto. O ficheiro regista o último runId de push. Sem isso, pull devolve um erro:

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

Este ficheiro é específico de cada máquina e fica fora do repositório (consulte Configuration para perceber porquê).

Deteção de conflitos#

Antes de escrever cada destino, pull compara:

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

Se corresponderem → não há edições locais, por isso é seguro substituir. Se forem diferentes → existem edições locais; fazer pull iria descartá-las. pull aborta:

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

O ficheiro de bloqueio é aqui a única fonte de verdade — regista o que o servidor escreveu pela última vez, não o conteúdo de origem. As edições manuais em ficheiros traduzidos que queira manter devem ser commitadas (para sobreviverem a pull) ou deve fazer pull com --force (para serem substituídas).

Opções#

--force / -f#

Substitui os ficheiros de destino locais que divergiram do ficheiro de bloqueio. Utilize esta opção depois de rever os conflitos e decidir que a versão do servidor é a canónica (por exemplo, outra pessoa fez push de uma atualização do glossário que deve ter precedência).

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 alterar o sistema de ficheiros:

bash
lingo pull --dry-run

Mostra o número de ficheiros que seriam escritos e quantos já estão sincronizados. Útil em CI para confirmar que nada ficou dessincronizado.

Resultado#

Sucesso:

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

Execução simulada:

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 curso — volte a executá-lo mais tarde ou utilize push da próxima vez, que espera.)

Casos limite#

  • Sem push anterior. Erro como acima. Não existe o conceito de "fazer pull das traduções que existem algures no servidor" — pull aponta sempre para uma execução específica.
  • Estado da execução a apontar para uma execução eliminada/expirada. O motor devolve 404; pull comunica isso de forma clara. Elimine ~/.lingo/runs/<hash>.json e volte a executar push.
  • Motor diferente em .lingo/config.json daquele em que a execução foi criada. Incompatibilidade de ID do motor — a CLI devolve um erro com os IDs. Volte a executar push no motor atual.

Esta página foi útil?

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