lingo pull
Obtén los resultados del push más reciente y escríbelos en disco, con detección de conflictos frente al lockfile.
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, ejecutalingo pully 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
pushpudiera escribir. Un corte de red, un proceso terminado a la fuerza:pullcompleta 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:
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.jsoncomo 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:
Error: 3 conflict(s) — rerun with --forceAquí, 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:
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:
lingo pull --dry-runMuestra 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:
✓ Pulled run lrg_a8c...: wrote 12 file(s), 4 already in sync.Simulación:
Dry run complete. 16 file(s) already in sync.La ejecución falló o se canceló:
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":
pullsiempre apunta a una ejecución específica. - Estado de ejecución apuntando a una ejecución eliminada o expirada. El motor devuelve 404;
pulllo reporta claramente. Elimina~/.lingo/runs/<hash>.jsony vuelve a ejecutarpush. - Un motor distinto en
.lingo/config.jsonal 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 ejecutarpushcontra el motor actual.