0건이 무서웠어요
실제 사고를 터미널로 수습하면서 만들었어요. 계정 하나가 털렸고, 몇 시간 만에 브랜치 222개가 덮어써졌습니다.
처음에는 gh api 로 브랜치 몇 개만 확인하는 스크립트였어요. 그런데 222개가 되니 결과를 못 믿겠더라고요.
0이 나와도 진짜 깨끗한 건지, 조회가 실패한 건지 알 수가 없었습니다. 잘못 짠 명령 하나가 조용히 0건을 뱉는 게 제일 무서웠어요.
그걸 구분해주는 걸 만들다 보니 도구가 됐습니다.
스크립트로는 안 됐던 것
- 01
활동 기록에 강제 푸시 여부가 없어요
before 와 head 만 있고 forced 같은 값이 없습니다. 그래서 정상 푸시랑 덮어쓰기가 겉으로 똑같이 생겼어요. 그냥 짜면 222개가 다 정상 푸시로 보입니다.
- 02
에러 하나에 뜻이 둘이에요
비교하다 404 가 나면, 기록이 갈아치워진 것일 수도 있고 커밋이 정리돼 사라진 것일 수도 있어요. 앞은 보고할 사실이고 뒤는 확인 실패입니다. 스크립트는 둘 다 그냥 에러로 넘겨요.
- 03
시간 한 글자가 틀리면 조용히 엉뚱한 데를 봐요
Date.parse 는 못 읽은 값에 에러를 안 내고 2000년 1월 1일을 만들어냅니다. 그러면 26년 전을 훑고 "아무 일 없었어요" 가 떠요.
- 04
222개를 눈으로 못 읽어요
스크립트는 결과를 터미널에 쏟아붓습니다. 정작 필요한 건 "이 중에 뭐부터 볼까" 인데, 그건 화면이 있어야 되는 일이었어요.