Obsidian 볼트를 그대로 git 레포로 쓰기 — iCloud를 포기한 이유
한 줄 요약
공개할 글을 “고르는” 구조를 버리고, 볼트 전체가 공개 대상인 별도 폴더를 만들었다.
본문
안 하기로 한 방법
개인 사이트를 Obsidian으로 운영하려고 보니 문제가 하나 있었다. 쓰고 있는 볼트에는 공개하면 안 되는 업무 노트가 섞여 있다.
처음 떠오른 방법은 볼트 안에 publish/ 폴더를 만들고, 거기 있는 것만 레포로
복사하는 스크립트를 두는 것이었다. 흔한 구성이고 자료도 많다.
그런데 이 구조에는 “무엇을 공개할지 판단하는 로직”이 매번 실행된다. 글을 쓸 때마다 스크립트가 돌고, 스크립트가 한 번 틀리면 그게 곧 사고다. 실패 지점이 상시 존재하는 셈이다. 게다가 그 판단은 내가 폴더를 제대로 골랐다는 전제에 의존한다 — 즉 피곤한 날 실수 하나로 무너진다.
선택한 방법
볼트를 물리적으로 분리했다. ~/Projects/personal-site 에 독립 볼트를 만들고,
이 폴더에는 공개해도 되는 내용만 둔다.
이렇게 하면 선별 로직이 필요 없어진다. “무엇을 공개할까”를 매번 판단하는 대신 “이 폴더 전체가 공개 대상”이라는 사실 하나만 유지하면 된다. 사고 위험이 줄어든 게 아니라 판단할 일 자체가 사라졌다.
두 번째 결정은 볼트 폴더를 git 레포 루트로 그대로 쓴 것이다. 복사 단계가 없으니
push 가 곧 배포가 된다. 움직이는 부품이 하나 줄었다.
iCloud를 포기한 이유
이 볼트는 iCloud 밖에 있다. obsidian-git 플러그인과 iCloud 동기화를 같은 폴더에서
돌리면 .git 이 깨지는 사고가 흔하다.
이유는 짐작할 만하다. iCloud는 안 쓰는 파일을 내리고(evict) 필요할 때 다시 받는데,
.git 안에는 작은 파일이 수백 개 있고 git은 그것들이 지금 당장, 전부 있다고 가정한다.
두 쪽이 같은 파일을 비동기로 건드리면 인덱스가 깨진다.
그래서 동기화와 백업은 GitHub가 담당하게 했다.
독자가 가져갈 것
- 선별 동기화 스크립트를 짜기 전에, 볼트를 분리해서 판단 자체를 없앨 수 있는지 먼저 보라
obsidian-git을 쓸 거면 볼트를 iCloud·Dropbox 밖으로 빼라- 이 구성을 택하기 전에 자문할 것: 모바일에서 글을 쓰지 않아도 괜찮은가
안 맞다고 본 지점
- 모바일 작성을 포기해야 한다. iCloud 밖이라 아이폰·아이패드 Obsidian 앱에서 이 볼트가 직접 안 열린다. 출퇴근길에 쓰는 게 중요한 사람은 이 구성을 쓰면 안 된다.
- 초안을 같은 볼트에 두게 되므로
drafts/를.gitignore로 막는 의존이 생겼다. 판단 하나를 없앴지만 다른 보호 장치 하나가 늘어난 셈이고, 공짜는 아니었다.
참고
체크리스트 (발행 전)
-
publish: true로 변경했는가 -
tags를 태그 체계에서 골랐는가 —aitoolingautomationworkstylecareerpersonal중 최대 2개 -
description을 한 문장으로 채웠는가 (목록 페이지에 노출됨) - 회사·부서·동료·내부 자료 관련 내용이 섞이지 않았는가
-
scripts/check-publish.sh를 통과하는가