|
Documentación
Agenda una demoPlataforma
PlataformaMCPCLI
APIFlujos de trabajo
GuíasRegistro de cambios

Descripción general

  • @lingo.dev/cli

Primeros pasos

  • Inicio rápido
  • Configuración

Referencia

  • lingo push
  • lingo pull
  • Otros comandos
  • lingo purge

Configuración

  • Controles de claves
  • Formatos
  • Idiomas

Guías

  • Agregar un idioma
  • Traducciones existentes
  • Retraducción
  • Notas del traductor
  • Ejecuciones, estado y recuperación
  • CI/CD
  • Monorepos
  • Proyectos grandes

¿Buscas el CLI anterior (v0)? Consulta la documentación del CLI anterior

lingo pull

Obtén los resultados del push más reciente y escríbelos en disco, con detección de conflictos frente al lockfile.

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

Cuándo usarlo#

lingo push ya escribe los resultados cuando termina la ejecución, así que pull solo resulta útil cuando no esperaste (o no pudiste esperar) de forma sincrónica:

  • Cerraste la terminal en plena traducción. Vuelve a abrirla y ejecuta lingo pull: retoma desde donde se quedó la ejecución.
  • Haces pull desde otra máquina. El traductor ejecuta push en su laptop; CI o un compañero ejecuta pull sobre el mismo checkout, el mismo motor y las mismas credenciales, y obtiene los resultados.
  • Retomaste el trabajo después de que terminó la ejecución, pero antes de que push pudiera escribir. Un corte de red, un proceso terminado a la fuerza: pull completa el trabajo.

Cómo encuentra la ejecución#

pull lee ~/.lingo/runs/<hash>.json, donde <hash> se deriva de la ruta absoluta de la raíz del proyecto. El archivo registra el último runId de push. Sin eso, pull da error:

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

Este archivo es específico de cada máquina y vive fuera del repositorio (consulta Configuration para entender por qué).

Detección de conflictos#

Antes de escribir cada destino, pull compara:

  • El hash del archivo local en disco
  • El hash registrado en .lingo/lock.json como la última versión conocida del servidor

Si coinciden → no hay ediciones locales y es seguro sobrescribir. Si difieren → sí hay ediciones locales; hacer pull las descartaría. pull aborta:

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

Aquí, el lockfile es la única fuente de verdad: registra lo último que escribió el servidor, no el contenido fuente. Las ediciones manuales en archivos traducidos que quieras conservar deben confirmarse con un commit (para que sobrevivan a pull) o recuperarse con --force (para que se sobrescriban).

Flags#

--force / -f#

Sobrescribe los archivos de destino locales que hayan divergido del lockfile. Úsalo después de revisar los conflictos y decidir que la versión del servidor es la canónica (por ejemplo, si alguien más hizo push de una actualización del glosario que debe tener prioridad).

Flujo de trabajo 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#

Muestra lo que pull haría sin tocar el sistema de archivos:

bash
lingo pull --dry-run

Muestra cuántos archivos se escribirían y cuántos ya están sincronizados. Útil en CI para comprobar que nada se haya desalineado.

Salida#

Éxito:

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

Simulación:

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

La ejecución todavía no termina:

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

(pull no bloquea ejecuciones en curso: vuelve a ejecutarlo más tarde, o usa push la próxima vez, que sí espera).

Casos límite#

  • Sin push previo. Error como arriba. No existe el concepto de "hacer pull de traducciones que existen en algún lugar del servidor": pull siempre apunta a una ejecución específica.
  • Estado de ejecución apuntando a una ejecución eliminada o expirada. El motor devuelve 404; pull lo reporta claramente. Elimina ~/.lingo/runs/<hash>.json y vuelve a ejecutar push.
  • Un motor distinto en .lingo/config.json al que se usó para crear la ejecución. Hay una incompatibilidad en el ID del motor: la CLI muestra el error con los IDs. Vuelve a ejecutar push contra el motor actual.

¿Te resultó útil esta página?

Max PrilutskiyMax Prilutskiy·Actualizado hace 5 días·3 min de lectura