개발일지WhoAmI — 공부 기록을 발행 가능한 형태로 좁힌 파이프라인 →
PC 두 대를 오가며 깨지는 지점만 명령 하나로 걷어냈다
집과 회사에서 같은 저장소를 만지면 git이 옮기지 않는 것들 때문에 한쪽에서만 빌드가 깨진다. 동기화를 새로 만드는 대신 깨지는 지점 하나만 자동화한 기록과, AI 사용량을 PC별로 나눠 저장해야 했던 이유.
목차 3
PC 두 대에서 같은 저장소를 만지기 시작하니 한쪽에서만 빌드가 깨지는 일이 생겼다. 오류 메시지는 Cannot find module ... 인데 그 모듈은 분명히 package.json 에 있다.
원인은 git 이 옮기지 않는 것들이었다. node_modules/ 는 수만 개 파일에 OS별 실행 파일이 들어 있어서 일부러 저장소에 넣지 않는다. 볼트 경로를 적어 둔 파일도, Cloudflare 로컬 상태도 마찬가지다. 그래서 git pull 로 package-lock.json 만 바뀌고 설치된 트리는 옛것 그대로 남으면, 그때부터 이 PC 에서만 깨진다. 그리고 오류 메시지는 원인과 상관없는 말을 한다.
동기화를 새로 만들지 않고 앉는 순서만 고정했다
여기서 도구를 만들 유혹이 있다. 두 PC 의 상태를 맞추는 무언가를 짜는 것이다. 그 길은 가지 않았다. 저장소를 옮기는 일은 git 하나에만 맡기고, 깨지는 지점 하나만 명령으로 덮었다.
npm run sync 가 앉을 때 도는 순서다. 커밋 안 된 변경이 있으면 거기서 멈추고, git pull --rebase 를 한 뒤, package-lock.json 이 바뀌었을 때만 설치를 다시 한다. 그다음 환경을 점검하고 글을 검증한다.
핵심은 세 번째다. 매번 설치하면 느리고, 안 하면 위의 상태가 된다. 조건을 lock 파일의 변경 하나로 잡으면 사람이 판단할 것이 없어진다.
일어설 때의 절차도 같은 이유로 고정했다. 검증을 돌리고 커밋하고 push 한다. 커밋하지 않은 것은 다른 PC 에 존재하지 않는다는 게 이 구조에서 유일하게 위험한 지점이라, 환경 점검 명령이 커밋 안 된 변경을 경고로 알려 준다.
두 PC 에서 볼트를 공유하는 것은 저장소가 아니라 클라우드 드라이브가 맡는다. 드라이브 문자가 PC 마다 달라도 되도록, 관리자는 폴더 이름으로 판단하지 않고 .obsidian 이나 발행 후보 폴더가 실제로 있는지 확인해서 볼트인지 정한다. 찾은 경로는 그 PC 에만 저장되고 저장소로 올라가지 않는다.
저장소를 클라우드 드라이브 안에 두는 것은 버렸다. 동기화 프로그램이 .git 폴더를 파일 단위로 건드리면 인덱스가 깨지고, 두 PC 가 동시에 켜져 있으면 서로의 커밋을 덮는다. 볼트만 드라이브에 두고 저장소는 로컬 디스크에 둔다.
사용량은 PC별 칸을 따로 두고 자기 칸만 쓴다
같은 시기에 AI 사용량을 자동으로 모으는 스크립트를 붙였다. 구독 플랜에는 사용량을 내보내는 공개 API 가 없지만 CLI 도구는 로컬에 로그를 남기므로, 그 로그만 읽어서 날짜별 토큰을 뽑는다. 사용 기록을 네트워크로 내보내지 않는다.
여기서 두 PC 가 바로 문제가 됐다. 양쪽에서 각각 돌리면 같은 날짜에 값이 둘 생긴다. 하나로 덮어쓰면 다른 PC 의 기록이 사라지고, 무턱대고 더하면 같은 PC 를 두 번 돌렸을 때 이중 계산이 된다. 둘 다 조용히 틀리는 방식이다.
그래서 PC 이름을 키로 두고 각자 자기 칸만 다시 쓰게 했다. 합산은 저장할 때가 아니라 화면을 그릴 때 한다. 이렇게 두면 어느 PC 에서 몇 번을 돌리든 결과가 같다.
손으로 옮겨 적는 스냅샷과 자동 수집은 파일을 따로 뒀다. 웹이나 앱에서 쓴 양은 로그가 없어 자동으로 알 수 없기 때문이다. 두 출처를 한 파일에 섞으면 나중에 어느 숫자가 어디서 온 것인지 알 수 없어진다.
자동이라고 적을 수 없는 부분
이 스크립트가 「네트워크를 전혀 쓰지 않는다」고는 말할 수 없다. 한 도구의 사용량은 외부 패키지를 받아 실행해서 읽으므로 캐시에 없으면 레지스트리에서 내려받는다. 그게 싫을 때를 위해 그 수집만 건너뛰는 옵션과, 저장해 둔 출력을 대신 읽는 옵션을 뒀다. 받아 오는 패키지의 버전도 고정했다 — 매번 최신을 받으면 어느 날 출력 형식이 바뀌어 숫자가 조용히 달라진다.
지금 두 PC 를 오가는 절차에서 자동인 것은 앉을 때 한 줄과 일어설 때 세 줄뿐이다. 나머지는 습관으로 남아 있다. 같은 글을 양쪽에서 동시에 고치지 않기, 자리를 뜰 때 드라이브 동기화가 끝났는지 보고 일어서기. 이건 도구로 막을 수 있는 문제가 아니라서 문서에 적어 두고 지키는 중이다.
함께 보면 좋은 글
이 기록과 태그가 겹치는 아티클입니다.