0 件が怖かったんです
実際の事故をターミナルで片付けながら作りました。アカウントが 1 つ乗っ取られ、数時間でブランチ 222 本が上書きされました。
最初は gh api でブランチを数本確認するスクリプトでした。222 本になったとき、結果が信じられなくなりました。
0 と出ても、本当にきれいなのか、取得に失敗したのかが分かりません。書き損じた 1 行が黙って 0 件を返す。それがいちばん怖かったです。
その 2 つを見分けるものを作っているうちに、道具になっていました。
スクリプトでは無理だったこと
- 01
活動記録に強制プッシュかどうかが入っていません
before と head だけがあり、forced のような値はありません。普通のプッシュと上書きが見た目で同じです。素直に書けば 222 本とも普通のプッシュに見えます。
- 02
1 つのエラーに意味が 2 つあります
比較で 404 が出たとき、履歴が置き換わったのかもしれないし、コミットが整理されて消えたのかもしれません。前者は報告すべき事実、後者は確認失敗です。スクリプトはどちらもエラーで流します。
- 03
時刻が 1 文字ずれると、黙って別の期間を見ます
Date.parse は読めない値でもエラーを出さず、2000 年 1 月 1 日を作り出します。26 年前を掘って「何もありませんでした」と出ます。
- 04
222 件は目で読めません
スクリプトは結果をターミナルに流し込みます。本当に必要なのは「このうちどれから見るか」で、それには画面が要りました。