DotweaveDotweave
문서GitHub
DotweaveDotweave
    • 소개
    • dotweave 설치
    • 첫 동기화 설정
    • 두 번째 기기 설정
    • 동기화가 작동하는 방식
    • 디렉터리와 저장소 구조
    • 동기화 모드
    • 프로필
    • 플랫폼별 경로
    • 시크릿과 암호화
    • 파일과 디렉터리 추적하기
    • 매일 쓰는 push와 커밋 흐름
    • 여러 기기 동기화 유지하기
    • 셸 자동완성 켜기
    • 에이전트 스킬 설치하기
    • 설정과 저장소 형식 업그레이드
    • 동기화 문제 해결하기
    • dotweave init
    • dotweave track
    • dotweave push
    • dotweave pull
    • dotweave status
    • dotweave untrack
    • dotweave cd
    • dotweave profile
    • dotweave doctor
    • dotweave autocomplete
    • dotweave skill
    • manifest.jsonc
    • settings.jsonc
    • 환경 변수와 경로
    • 오류 메시지
문서GitHub
  1. Dotweave/
  2. 디렉터리와 저장소 구조

디렉터리와 저장소 구조

dotweave가 앱 데이터 디렉터리를 어디에 두는지, sync 저장소 안에 무엇이 있는지, artifact 접미사가 파일 종류를 어떻게 나타내는지 정리해요.

dotweave 홈 디렉터리 찾기

dotweave가 소유하는 모든 것은 디렉터리 하나 아래에 있어요. macOS, Linux, WSL에서는 기본값이 $XDG_CONFIG_HOME/dotweave이고, 없으면 ~/.config/dotweave로 넘어가요. Windows에서는 기본값이 %APPDATA%\dotweave예요. DOTWEAVE_HOME을 설정하면 모든 플랫폼에서 이 선택을 덮어써요.

전체 폴백 순서는 환경 변수와 경로에서 확인하세요.

그 안에는 세 가지가 있고, 아래 트리에 전부 나와요.

  • <dotweave-home>/
    • settings.jsonc
    • keys.txt
    • repository/
      • .git/
        • …
      • .gitattributes
      • .gitignore
      • manifest.jsonc
      • profiles/
        • default/
          • .gitconfig
          • .config/
            • nvim/
              • init.lua
          • .ssh/
            • config.dotweave.secret
        • work/
          • .config/
            • work-tool/
              • config.json

settings.jsonc는 이 기기가 사용하는 프로필을 기록해요. keys.txt는 age 비밀 키를 담아요. repository/가 sync 디렉터리이고, git이 추적하는 유일한 부분이에요.

keys.txt는 의도적으로 repository/ 밖에 있어서 절대 커밋되지 않아요. dotweave가 추적을 거부하는 유일한 파일이기도 해요. 필요해지기 전에 다른 곳에 백업해 두세요.

sync 디렉터리 안쪽

repository/는 평범한 git 저장소예요. dotweave는 루트에 네 가지를 쓰고, 그 밖의 것은 건드리지 않아요.

manifest.jsonc는 추적 항목 목록이고, 필드별 설명은 manifest.jsonc에 있어요. .gitattributes에는 * -text가 들어 있어서 git이 설정 파일의 줄 끝을 바꾸지 못하게 해요. .gitignore에는 암호화된 artifact를 커밋할 수 있게 유지하는 관리 블록이 있고, init과 push마다 다시 생성돼요.

# BEGIN dotweave managed secret artifact rules
!profiles/
!profiles/**/
!profiles/**/*.dotweave.secret
!profiles/**/*.dotweave.symlink
# END dotweave managed secret artifact rules

저장소 루트에 직접 추가한 다른 파일은, 관리 블록 밖에 쓴 .gitignore 규칙까지 포함해서 그대로 남아요.

profiles 아래의 artifact

추적 대상 내용은 profiles/<profile>/<repoPath>에 저장돼요. profiles 디렉터리 이름은 예약되어 있고, 그래서 프로필 이름을 profiles로 지을 수 없어요.

경로는 홈 디렉터리를 그대로 반영해요. 추적한 ~/.ssh/config는 repoPath를 덮어쓰지 않는 한 프로필 디렉터리 안에서 .ssh/config가 돼요.

저장된 파일의 접미사가 원본이 무엇이었는지를 나타내요.

저장 이름원본내용
<name>normal 모드의 일반 파일바이트 그대로예요.
<name>.dotweave.secretsecret 모드의 일반 파일-----BEGIN AGE ENCRYPTED FILE-----로 시작하는 ASCII armor age 암호문이에요.
<name>.dotweave.symlink심링크POSIX 링크 대상을 담은 일반 파일이에요.

이 두 접미사에 의미가 있기 때문에, 추적 경로의 어떤 세그먼트도 둘 중 하나로 끝나면 안 돼요.

프로필에 할당된 항목은 그 프로필 디렉터리 아래로 들어가요. 나머지는 모두 default/ 아래로 들어가요. dotweave는 다른 프로필의 디렉터리를 절대 정리하지 않기 때문에, 저장소 하나가 모든 기기의 설정을 나란히 담아요.

dotweave가 git을 위해 관리하는 파일

dotweave는 git이 제대로 동작하도록 저장소를 다듬지만, git을 데이터베이스로 쓰지는 않아요.

sync 디렉터리가 작업 트리인지 확인할 때 git rev-parse를, dotweave init 중에 git init 또는 git clone을, artifact가 오래되었는지 판단하기 전에 커밋된 프로필을 알아보려고 git show HEAD:manifest.jsonc를 실행해요. 커밋, 스테이징, fetch, push는 하지 않아요.

심링크를 실제 심링크가 아니라 메타데이터 파일로 저장하기 때문에, Windows에서 개발자 모드 없이도 저장소가 똑같이 clone되고 git diff에 링크 대상이 텍스트로 보여요.

구현과 참고

이 경로를 만들어 내는 항목 필드는 manifest.jsonc, 접미사를 결정하는 규칙은 동기화 모드에서 확인하세요.

← 이전개념동기화가 작동하는 방식push와 pull 파이프라인, dotweave가 git을 대신 실행하지 않는 이유, dry run이 알려 주는 내용을 설명해요.→ 다음개념동기화 모드normal, secret, ignore가 push로 저장되는 내용과 pull로 복원되는 내용을 어떻게 바꾸는지 설명해요.

이 페이지에서

  1. dotweave 홈 디렉터리 찾기
  2. sync 디렉터리 안쪽
  3. profiles 아래의 artifact
  4. dotweave가 git을 위해 관리하는 파일
  5. 구현과 참고