危険察知4 択難易度 応用

状況

手順書には「v2.4.1 を本番にデプロイする」とある。デプロイスクリプトは今チェックアウトしている内容を配る。作業者が次を実行した。

ダブルチェッカーとして止めるべき点は?

$ git fetch --tags$ git checkout main$ git pull$ ./deploy.sh production

正答

  1. git fetch --tags は git pull の後に実行しないとタグが取れない
  2. main の最新を配っており、v2.4.1 のコードとは限らない
  3. タグを checkout すると detached HEAD でデプロイできないので、これでよい
  4. 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

gittagdeploy

この問題を含む 危険察知 のテストを制限時間つきで解く

危険察知クイズへ