メニュー
gitmoru
日本語

0 件が怖かったんです

実際の事故をターミナルで片付けながら作りました。アカウントが 1 つ乗っ取られ、数時間でブランチ 222 本が上書きされました。

最初は gh api でブランチを数本確認するスクリプトでした。222 本になったとき、結果が信じられなくなりました。

0 と出ても、本当にきれいなのか、取得に失敗したのかが分かりません。書き損じた 1 行が黙って 0 件を返す。それがいちばん怖かったです。

その 2 つを見分けるものを作っているうちに、道具になっていました。

スクリプトでは無理だったこと

  1. 01

    活動記録に強制プッシュかどうかが入っていません

    before と head だけがあり、forced のような値はありません。普通のプッシュと上書きが見た目で同じです。素直に書けば 222 本とも普通のプッシュに見えます。

  2. 02

    1 つのエラーに意味が 2 つあります

    比較で 404 が出たとき、履歴が置き換わったのかもしれないし、コミットが整理されて消えたのかもしれません。前者は報告すべき事実、後者は確認失敗です。スクリプトはどちらもエラーで流します。

  3. 03

    時刻が 1 文字ずれると、黙って別の期間を見ます

    Date.parse は読めない値でもエラーを出さず、2000 年 1 月 1 日を作り出します。26 年前を掘って「何もありませんでした」と出ます。

  4. 04

    222 件は目で読めません

    スクリプトは結果をターミナルに流し込みます。本当に必要なのは「このうちどれから見るか」で、それには画面が要りました。

今の状況

復元は終わり、この道具は次のために残しました。似たことがまた起きたら、これを開いてください。

読んでくださってありがとうございます。

はじめかた →