콘텐츠로 이동

Devsync

dotfile을 Git으로 동기화하는 CLI

Devsync개발 환경 설정 파일(dotfile)을 Git으로 동기화하는 CLI 도구예요. 여러 기기에서 동일한 개발 환경을 유지하고 싶은 개발자를 위해 만들어졌어요.


  • 파일·디렉터리 추적: track 명령으로 홈 디렉터리의 파일이나 폴더를 동기화 대상으로 등록할 수 있어요.
  • Push / Pull 동기화: push로 로컬 설정을 저장소에 반영하고, pull로 저장소 내용을 로컬에 적용해요.
  • 시크릿 암호화: age 암호화를 활용해 토큰이나 키 같은 민감한 파일을 안전하게 저장하고 동기화할 수 있어요.
  • 프로파일: 기기마다 다른 프로파일을 지정해 일부 설정만 선택적으로 동기화할 수 있어요.
  • 플랫폼별 경로 지원: 동일한 설정을 Windows, macOS, Linux, WSL에서 각각 다른 경로로 관리할 수 있어요.
  • 변경 미리 보기: --dry-run 플래그나 status 명령으로 적용 전에 어떤 변경이 생기는지 확인할 수 있어요.
  • 상태 점검: doctor 명령으로 저장소 상태, 설정, 추적 경로를 한 번에 검사할 수 있어요.

이미 세상에는 stow, chezmoi 같은 훌륭한 dotfile 동기화 도구가 있어요.

이 도구들의 공통점은 저장소를 진실의 원천(source of truth) 으로 삼는다는 거예요. stow는 홈 디렉터리의 파일을 저장소 안의 파일에 대한 심볼릭 링크로 연결하고, chezmoi는 저장소를 먼저 편집한 뒤 로컬에 적용하는 방식이에요. 덕분에 저장소 상태가 항상 명확하지만, 그만큼 파일을 편집할 때도 도구를 거쳐야 해요. ~/.zshrc를 수정하려면 chezmoi edit ~/.zshrc를 먼저 실행해야 하고, stow를 쓴다면 저장소 구조에 맞게 파일을 미리 재배치해야 하죠.

Devsync는 반대로 생각해요. 진실의 원천은 항상 로컬 원본 파일이에요. 저장소는 동기화 사본일 뿐이고, pushpull은 그 사이를 오가는 수단이에요. 설정 파일을 편집하고 싶을 땐 그냥 편집기로 열면 돼요. 동기화할 준비가 되면 devsync push 한 번으로 저장소에 반영하면 그만이에요.

물론 트레이드오프도 있어요. chezmoi가 제공하는 템플릿 기반의 파일 변환 기능은 Devsync에는 없어요. 기기마다 설정 파일의 내용 자체를 다르게 만들어야 한다면 chezmoi가 더 잘 맞을 수 있어요. Devsync는 그보다 기존 편집 흐름을 그대로 유지하면서 여러 기기에 설정을 동기화하는 것을 우선으로 삼아요.