주인 없는 파일들
착지가 건드리는 것 대부분은 작업 단위 하나에 딱 속하는 자료고, 선점이 그걸 지켜줘. 그런데 몇 개는 모두가 공유해. 새 항목마다 등록하는 레지스트리, 새 항목마다 키를 더하는 메시지 카탈로그. 그것들은 아무도 선점 안 하고, 같은 오후에 세션 여럿이 편집하고, 흥미로운 실패가 사는 자리가 거기야.
비대칭을 배워둘 값어치가 있어. 어느 반쯤 된 상태가 위험한지 알려주니까. 자료가 아직 안 착지한 레지스트리 항목은 아무것도 안 그리고 아무것도 안 터뜨려. 안전하게 실패해. 메시지 키가 빠진 레지스트리 항목은 페이지를 지을 때 예외를 던져. 시끄럽게 실패하지. 그러니 치명적인 조합은 정확히 하나야. 이웃의 레지스트리 항목을 그들의 메시지 키 없이 커밋하는 것.
여기서 "공유 파일 조심해"보다 날카로운 규칙이 나와. 항목이 아니라 키를 확인해. 공유 배선을 커밋하기 전에, 레지스트리의 모든 항목이 모든 카탈로그에서 해소되는지 확인해. 네 것만이 아니라 전부. 남의 것이 안 되면 기다려. 친절하게 그 사람 블록을 대신 쓰지 마.
모든 영리한 대안을 이긴 정책
세션 여럿이 병렬로 돌 때 정착된 답은 이래. 세션마다 자기 자료만 커밋하고, 마지막 패스 하나가 공유 등록을 전부 일관성 검사가 붙은 커밋 하나로 배선한다. 눈에 보이는 비용이 있어. 배선이 착지할 때까지 자료는 존재하는데 어디에도 색인이 안 돼. 그 비용을 소리 내서 말하는 게 이 정책을 제안하는 일의 일부고.
놓치기 쉬운 성질도 하나 있어. 네 레지스트리 항목이랑 카탈로그 키를 둘 다 작업 트리에 커밋 안 한 채로 두는 게 안전하고 스스로 낫는다는 것. 둘이 같이 다니니까, 다음에 공유 파일을 커밋하는 세션이 네 걸 완전한 단위로 실어가. 사람들이 영리한 스테이징에 손 뻗게 만드는 그 불안은 근거가 없어. 저장소가 조용해질 때까지 배선을 인질로 잡을 필요 없어.
여기서 일반화되는 건 이거야. 공유 파일에 대한 규칙은 "조심해"가 아니라 어느 반쯤 된 상태가 시끄럽게 실패하는지를 아는 거야. 안전하게 실패하는 상태는 그냥 두면 되고, 시끄럽게 실패하는 상태 하나만 검사로 막으면 돼. 그러면 조심할 게 목록 하나로 줄어들고, 목록은 스크립트로 바꿀 수 있어.