dotweave pull
sync 디렉터리의 artifact를 로컬 경로로 되돌려 쓰고, 시크릿은 먼저 복호화해요.
사용법
dotweave pull [--dry-run] [--profile <profile>] [--yes] [--with-git]
추적 항목에 저장된 artifact를 읽어서 홈 디렉터리 아래 로컬 경로로 다시 써요.
플래그
| 플래그 | 타입과 기본값 | 역할 |
|---|---|---|
--dry-run | boolean, manifest 또는 false | 로컬 경로를 건드리지 않고 계획만 출력해요. manifest 기본값이 true이면 --no-dry-run으로 덮어쓸 수 있어요. |
--profile | string, manifest 또는 없음 | settings.jsonc의 활성 프로필 대신 등록된 프로필 하나를 사용해요. |
--yes, -y | boolean, manifest 또는 false | 확인 없이 계획을 적용해요. manifest 기본값이 true이면 --no-yes로 덮어쓸 수 있어요. |
--with-git | boolean, manifest 또는 false | 계획을 만들기 전에 git 원격에서 pull해요. manifest 기본값이 true이면 --no-with-git으로 덮어쓸 수 있어요. |
확인 프롬프트와 비대화형 셸
pull은 먼저 계획을 출력한 다음 Apply these changes? [y/N] 를 물어봐요. y라고 답할 때만 진행하고, 그 밖의 입력에는 로컬 경로를 그대로 둬요.
프롬프트 없이 적용하려면 --yes 또는 -y를 쓰세요. 계획만 보고 멈추려면 --dry-run을 쓰세요.
비대화형 터미널에서 -y 없이 실행하면 Pull confirmation requires an interactive terminal. 메시지로 실패하고, -y로 다시 실행하라는 힌트를 보여줘요. CI에서 마주치는 실패가 바로 이 경우라서, 스크립트로 돌리는 pull에는 이 플래그가 필요해요.
차이가 없으면 이미 최신 상태라고 알리고 프롬프트 없이 그대로 끝나요.
명령줄 플래그는 manifest.jsonc에 동기화된 기본값보다 우선해요.
동작
secret artifact는 로컬에 쓰기 전에 keys.txt의 identity로 복호화해요.
로컬에 쓰는 모든 파일은 대상 경로 옆 임시 디렉터리에 먼저 준비한 다음 제자리로 rename해요. 그래서 pull이 중간에 끊겨도 반쯤 쓰인 파일이 남지 않아요. 남아 있는 로컬 경로는 깊은 곳부터 삭제하고, 디렉터리는 그 안의 모든 항목이 이미 삭제 예정일 때만 삭제해요.
항목은 배치 단위로 적용해요. 한 배치 안의 두 항목이 서로 겹치는 로컬 경로를 갖지 않도록 묶어요.
dotweave pull
· Preparing pull...
~ Planned pull changes
Update from repository (1)
+ /home/you/.config/nvim/init.lua
· Applying pull...
✔ Pull complete
updated: 1 paths updated
removed: 0 paths removed
계획은 두 절로 나뉘어요. Update from repository (n)은 새로 쓸 경로를 + 불릿으로, Remove locally (n)은 삭제할 경로를 - 불릿으로 나열해요. 비어 있는 절은 출력하지 않아요.
dry run은 같은 계획을 출력하고 거기서 멈춰요. 마지막 줄들은 미리 보기 표현으로 바뀌어요.
~ Pull preview (dry run)
updated: 1 paths would be updated
removed: 0 paths would be removed
pull은 저장소에 없는 로컬 파일을 삭제해요. 첫 push 전에는 추적 중인 모든 경로가 삭제 목록에 올라와요. 먼저 dotweave status나 dotweave pull --dry-run을 실행하세요.
오류
pull은 sync 디렉터리가 git 작업 트리가 아닐 때, manifest.jsonc가 없거나 읽을 수 없거나 유효하지 않을 때 실패해요. 내 identity로 secret artifact를 복호화할 수 없을 때, 저장된 artifact가 추적 항목의 kind와 어긋날 때도 실패해요. 파일 항목이 저장소에서는 디렉터리로 해석되는 경우가 그런 예예요. 비대화형 터미널의 확인 실패는 위에서 설명한 그대로예요. 각 메시지와 해결 방법은 오류 메시지의 시크릿과 age 절에서 확인하세요.
관련 명령
적용하기 전에 두 방향을 미리 보려면 dotweave status, 두 번째 기기에서 pull과 git을 함께 쓰는 흐름은 여러 기기 동기화 유지하기를 확인하세요.