|
Dokumentation
Demo buchenPlattform
PlattformMCPCLI
APIWorkflows
LeitfädenChangelog

Überblick

  • @lingo.dev/cli

Erste Schritte

  • Schnellstart
  • Konfiguration
  • Beispiele

Referenz

  • lingo push
  • lingo pull
  • lingo purge
  • Weitere Befehle

Konfiguration

  • Schlüsselsteuerung
  • Formate
  • Sprachen

Leitfäden

  • Eine Sprache hinzufügen
  • Bestehende Übersetzungen
  • Neuübersetzung
  • Anmerkungen für Übersetzer
  • Runs, Status und Wiederherstellung
  • CI/CD
  • Monorepos
  • Große Projekte

Suchst du die ältere CLI (v0)? Zur Dokumentation der Legacy CLI

lingo pull

Ruft die Ergebnisse des letzten Pushs ab und schreibt sie mit Konflikterkennung anhand der Sperrdatei auf die Festplatte.

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

Wann du es verwenden solltest#

lingo push schreibt die Ergebnisse bereits, sobald der Lauf abgeschlossen ist — pull ist also nur dann sinnvoll, wenn du nicht synchron gewartet hast oder nicht warten konntest:

  • Terminal während der Übersetzung geschlossen. Öffne es wieder und führe lingo pull aus — es macht genau dort weiter, wo der Lauf aufgehört hat.
  • Abruf auf einem anderen Rechner. Ein Übersetzer führt push auf dem Laptop aus; CI oder ein Teammitglied führt pull im selben Checkout mit derselben Engine und denselben Zugangsdaten aus und erhält die Ergebnisse.
  • Du setzt die Arbeit fort, nachdem der Lauf beendet war, aber bevor push schreiben konnte. Kurzer Netzwerkausfall, Prozess beendet — pull erledigt den Rest.

So wird der Lauf gefunden#

pull liest ~/.lingo/runs/<hash>.json, wobei <hash> aus dem absoluten Pfad des Projektstammverzeichnisses abgeleitet wird. Die Datei speichert die letzte runId von push. Ohne diese Datei gibt pull einen Fehler aus:

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

Diese Datei ist rechnerbezogen und liegt außerhalb des Repositorys (siehe Configuration für Details, warum das so ist).

Konflikterkennung#

Bevor jedes Ziel geschrieben wird, vergleicht pull:

  • Hash der lokalen Datei auf der Festplatte
  • Hash, der in .lingo/lock.json als zuletzt bekannte Serverversion gespeichert ist

Wenn sie übereinstimmen → keine lokalen Änderungen, sicheres Überschreiben. Wenn sie abweichen → es gibt lokale Änderungen; ein Pull würde sie verwerfen. pull bricht ab:

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

Die Sperrdatei ist hier die einzige verlässliche Quelle — sie erfasst, was der Server zuletzt geschrieben hat, nicht den Quellinhalt. Manuelle Änderungen an übersetzten Dateien, die du behalten möchtest, solltest du committen (damit sie pull überstehen) oder mit --force pullen (damit sie überschrieben werden).

Flags#

--force / -f#

Überschreibt lokale Zieldateien, die von der Sperrdatei abweichen. Verwende das, nachdem du die Konflikte geprüft und entschieden hast, dass die Serverversion maßgeblich ist (z. B. wenn jemand anderes ein Glossar-Update gepusht hat, das Vorrang haben soll).

Empfohlener Workflow:

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#

Zeigt, was pull tun würde, ohne das Dateisystem anzufassen:

bash
lingo pull --dry-run

Gibt die Anzahl der Dateien aus, die geschrieben würden, und wie viele bereits synchron sind. Nützlich in CI, um sicherzustellen, dass nichts auseinandergelaufen ist.

Ausgabe#

Erfolg:

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

Dry Run:

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

Lauf noch nicht abgeschlossen:

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

(pull blockiert nicht bei laufenden Läufen — führe es später erneut aus oder verwende beim nächsten Mal push, das wartet.)

Sonderfälle#

  • Kein vorheriger Push. Fehler wie oben. Es gibt kein Konzept wie „Übersetzungen pullen, die irgendwo auf dem Server existieren“ — pull zielt immer auf einen bestimmten Lauf.
  • Laufstatus verweist auf einen gelöschten oder abgelaufenen Lauf. Die Engine gibt 404 zurück; pull meldet das sauber. Lösche ~/.lingo/runs/<hash>.json und führe push erneut aus.
  • Andere Engine in .lingo/config.json als die, auf der der Lauf erstellt wurde. Die Engine-ID stimmt nicht überein — die CLI meldet einen Fehler mit den IDs. Führe push erneut für die aktuelle Engine aus.

War diese Seite hilfreich?

Max PrilutskiyMax Prilutskiy·Aktualisiert vor 19 Tagen·2 Min. Lesezeit