|
문서
데모 예약플랫폼
플랫폼MCPCLI
API워크플로
가이드변경 로그

개요

  • @lingo.dev/cli

시작하기

  • 빠른 시작
  • 구성

레퍼런스

  • lingo push
  • lingo pull
  • 기타 명령어
  • lingo purge

구성

  • 키 제어
  • 형식
  • 로캘

가이드

  • 로캘 추가하기
  • 기존 번역 활용하기
  • 재번역
  • 번역자 노트
  • 실행, 상태, 그리고 복구
  • CI/CD
  • 모노레포
  • 대규모 프로젝트

이전 CLI (v0)를 찾고 계신가요? 레거시 CLI 문서 보기

lingo pull

가장 최근 push의 출력을 가져와 lockfile과의 충돌을 감지하면서 디스크에 씁니다.

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

이럴 때 사용하세요#

lingo push는 실행이 완료되면 출력을 바로 기록합니다. 따라서 pull는 동기적으로 기다리지 않았거나 기다릴 수 없었던 경우에만 유용합니다:

  • 번역 도중 터미널을 닫은 경우. 터미널을 다시 열고 lingo pull를 실행하면 중단된 지점부터 이어서 가져옵니다.
  • 다른 머신에서 가져와야 하는 경우. 번역자가 노트북에서 push를 실행하고, CI 또는 팀원이 같은 체크아웃, 같은 엔진, 같은 자격 증명으로 pull를 실행하면 동일한 출력을 받을 수 있습니다.
  • 실행은 끝났지만 push가 쓰기 전에 작업을 재개한 경우. 네트워크가 잠시 끊기거나 프로세스가 종료됐더라도 pull가 나머지를 마무리합니다.

실행을 찾는 방식#

pull는 절대 프로젝트 루트 경로에서 파생된 <hash>에 해당하는 ~/.lingo/runs/<hash>.json를 읽습니다. 이 파일에는 push의 마지막 runId가 기록됩니다. 이 파일이 없으면 pull는 오류를 반환합니다:

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

이 파일은 머신별로 관리되며, 저장소 바깥에 위치합니다(이유는 Configuration에서 자세히 설명합니다).

충돌 감지#

각 대상 파일에 쓰기 전에 pull는 다음 두 가지를 비교합니다:

  • 디스크에 있는 로컬 파일의 해시
  • 마지막으로 알려진 서버 버전으로 **.lingo/lock.json**에 기록된 해시

둘이 같으면 → 로컬 수정 사항이 없으므로 안전하게 덮어쓸 수 있습니다. 다르면 → 로컬 수정 사항이 있으므로 pull 시 해당 변경 내용이 사라집니다. 이 경우 pull는 중단됩니다:

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

여기서 lockfile은 단일 기준점입니다. 소스 콘텐츠가 아니라 서버가 마지막으로 기록한 상태를 추적합니다. 유지하려는 번역 파일의 수동 편집은 커밋해 두어야(pull 이후에도 유지됨) 하고, 덮어써도 된다면 --force로 pull하면 됩니다.

플래그#

--force / -f#

lockfile과 달라진 로컬 대상 파일을 덮어씁니다. 충돌을 검토한 뒤 서버 버전을 기준으로 삼기로 결정했을 때 사용하세요(예: 다른 사람이 우선 반영되어야 할 용어집 업데이트를 push한 경우).

권장 워크플로:

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#

파일 시스템은 건드리지 않고 pull가 수행할 작업만 보여줍니다:

bash
lingo pull --dry-run

기록될 파일 수와 이미 동기화된 파일 수를 출력합니다. CI에서 아무것도 어긋나지 않았는지 확인할 때 유용합니다.

출력#

성공:

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

드라이 런:

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

실행이 아직 완료되지 않은 경우:

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

(pull는 진행 중인 run이 끝날 때까지 기다리며 블록하지 않습니다. 나중에 다시 실행하거나, 다음부터는 기다려 주는 push를 사용하세요.)

예외 상황#

  • 이전에 push한 적이 없는 경우. 위와 같은 오류가 발생합니다. "서버 어딘가에 있는 번역을 pull한다"는 개념은 없습니다. pull는 항상 특정 run을 대상으로 합니다.
  • 삭제되었거나 만료된 run을 가리키는 실행 상태인 경우. 엔진이 404를 반환하고, pull는 이를 명확하게 알려줍니다. ~/.lingo/runs/<hash>.json를 삭제한 뒤 push를 다시 실행하세요.
  • .lingo/config.json에 설정된 엔진이 run 생성 당시의 엔진과 다른 경우. 엔진 ID가 일치하지 않아 CLI가 해당 ID와 함께 오류를 표시합니다. 현재 엔진을 대상으로 push를 다시 실행하세요.

이 페이지가 도움이 되었나요?

Max PrilutskiyMax Prilutskiy·업데이트됨 5일 전·2 min read