dotweave push

추적 중인 로컬 파일을 sync 디렉터리에 반영하면서 secret 대상을 암호화해요.

사용법

dotweave push [--dry-run] [--profile <profile>] [--with-git] [--message <message>]

추적 항목의 로컬 경로 상태를 읽어서 profiles/<profile>/ 아래 artifact를 그 상태에 맞게 다시 써요.

플래그

플래그타입과 기본값역할
--dry-runboolean, manifest 또는 false아무것도 쓰지 않고 계획만 출력해요. manifest 기본값이 true이면 --no-dry-run으로 덮어쓸 수 있어요.
--profilestring, manifest 또는 없음settings.jsonc의 활성 프로필 대신 등록된 프로필 하나를 사용해요.
--with-gitboolean, manifest 또는 false바뀐 artifact를 커밋하고 git 원격으로 push해요. manifest 기본값이 true이면 --no-with-git으로 덮어쓸 수 있어요.
--message, -m비어 있지 않은 string, manifest 또는 자동 생성--with-git이 만드는 커밋 메시지를 지정해요. 앞뒤 공백은 제거해요.

동작

저장소 형식 마이그레이션이 계획보다 먼저 실행돼요. 그래서 계획은 마이그레이션이 끝난 상태를 반영해요. 이 단계는 저장소에 기록하기 때문에 --dry-run에서는 건너뛰어요.

push는 쓰기 전에 내용을 비교하므로 바뀌지 않은 파일은 아예 쓰지 않아요. secret 항목은 저장된 암호문을 복호화해서 평문끼리 비교해요. 그래서 내용이 같은 시크릿은 다시 암호화하지 않고, git 히스토리에 의미 없는 변경이 쌓이지 않아요.

쓰기 순서는 정해져 있어요. 관리 .gitignore 블록을 갱신하고, 남아 있는 대체 디렉터리 루트를 삭제하고, 남아 있는 artifact 키를 삭제한 다음 artifact를 써요. 다른 플랫폼 override나 다른 프로필이 소유한 artifact는 보호하므로, 한 기기에서 push해도 다른 기기가 저장한 내용이 지워지지 않아요.

dotweave push
· Pushing changes...
✔ Push complete
  plain: 2
  encrypted: 1
  symlinks: 0
  dirs: 1
  0 stale artifacts removed

dry run도 같은 개수를 보여줘요. 미리 보기라는 점을 알리려고 결과 줄과 stale artifact 줄의 표현만 달라져요.

dotweave push --dry-run
· Pushing changes...
~ Push preview (dry run)
  plain: 2
  encrypted: 1
  symlinks: 0
  dirs: 1
  0 stale artifacts would be removed

--with-git을 사용하면 갱신된 sync 디렉터리를 커밋하고 설정된 원격으로 push해요. 자동 커밋 메시지는 dotweave: sync configuration이에요. --dry-run에서는 모든 git 동작을 건너뛰어요. 명령줄 플래그는 manifest.jsonc의 기본값보다 우선해요.

오류

push는 sync 디렉터리가 git 작업 트리가 아닐 때, manifest.jsonc가 없거나 읽을 수 없거나 유효하지 않을 때 실패해요. 남아 있는 저장소 형식 마이그레이션을 끝낼 수 없을 때, 그리고 저장된 artifact가 추적 항목과 어긋날 때도 실패해요. secret 항목의 artifact가 암호화되지 않은 상태로 저장된 경우가 그런 예예요. 각 메시지와 해결 방법은 오류 메시지의 경로와 artifact 절에서 확인하세요.

관련 명령

같은 계획을 쓰기 없이 보려면 dotweave status, 두 방향이 공유하는 스냅샷 모델은 동기화가 작동하는 방식을 확인하세요.