Sitelet https://lingo.dev/es/docs/cli/pull

lingo pull

Actualizado el la semana pasada · 3 min de lectura

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 finaliza en cuanto se envía la ejecución, así que pull es la forma de recuperar sus resultados. Ejecútalo después de cualquier push sin --wait y cuando un push con --wait no haya podido escribir:

  • Cerraste la terminal en plena traducción. Vuelve a abrirla y ejecuta lingo pull: retoma desde donde se quedó la ejecución.
  • Más adelante en el mismo trabajo de CI. Un paso ejecuta lingo push; otro paso posterior, en el mismo runner y checkout, ejecuta lingo pull y recupera los resultados. Las demás máquinas los obtienen una vez que se confirman.
  • 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 saved run state for this project (looked for ~/.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 lrg_a8c...: wrote 12 file(s), 4 already in sync.

Simulación:

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

La ejecución falló o se canceló:

text
Run lrg_a8c... is failed, not pulling yet.

(pull espera a que termine una ejecución que todavía está pendiente o en curso, con la misma visualización de progreso que push --wait, y luego escribe los resultados. Una ejecución fallida o cancelada no tiene nada que recuperar; consulta Ejecuciones, estado y recuperación.)

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.