状況
手順書には「v2.4.1 を本番にデプロイする」とある。デプロイスクリプトは今チェックアウトしている内容を配る。作業者が次を実行した。
ダブルチェッカーとして止めるべき点は?
$ git fetch --tags$ git checkout main$ git pull$ ./deploy.sh production正答
git fetch --tagsはgit pullの後に実行しないとタグが取れない- main の最新を配っており、v2.4.1 のコードとは限らない
- タグを checkout すると detached HEAD でデプロイできないので、これでよい
git pullではなくgit pull --rebaseにしないと履歴が乱れる
解説
v2.4.1 のタグが付いた後に main へマージされた変更があれば、ここで配られるのはリリース判定を受けていないコードになる。手順書が版を指定しているなら git checkout v2.4.1 で取り出し、git describe や git rev-parse HEAD でタグのコミットと一致するか確かめる。detached HEAD は「ブランチ上にいない」状態というだけで、配る内容の取り出しには問題ない。fetch の順序や pull --rebase は履歴の話で、配る版の誤りとは関係しない。
参考: git-scm.com
この問題を含む 危険察知 のテストを制限時間つきで解く
危険察知クイズへ