LoginSignup
5
0

More than 1 year has passed since last update.

block-autosquash-commits-actionとBranch protection ruleでfixupコミットをマージしてしまうのを防ぐ

Last updated at Posted at 2023-01-26

GitHubでレビューで指摘をもらったり、自分で間違いを見つけたとき、修正のためにgitのfixupコミットを使う人は多いと思います。
多くの開発チームではレビューが通ればfixupコミットをrebaseコマンドなどで、修正先のコミットにfixupコミットを取り込んでからマージする場合が多いでしょう。
ただ、何も対策を講じていないと あっ!fixupコミットをrebaseしないままmaster(main)にマージしちゃった・・・・ となることが多いです(自分もやらかしたことがあります)。

GitHubを使っている人の場合 https://github.com/mozamimy/autosquash-please のような拡張を入れることで防ぐことができますが、発火しない場合があったりGitHubが変更を加えるとアップデートまで動かなくなる問題があります。

そこで今回紹介する block-autosquash-commits-action を導入することでfixupコミットの混入を防ぐ策を紹介します。

導入方法

シンプルで、.github/workflows/(適当な名前).ymlに下記の記述を行うだけです。

.github/workflows/check_fixup_commit.yml
on: pull_request

name: Check include fixup/squash commit

permissions:
  pull-requests: read

jobs:
  message-check:
    name: Block Autosquash Commits

    runs-on: ubuntu-latest

    steps:
      - name: Block Autosquash Commits
        uses: xt0rted/block-autosquash-commits-action@v2
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}

また、各リポジトリのBranch protection ruleに対してこのような設定をします。

スクリーンショット 2023-03-24 16.22.22.png

ブランチは今回mainを守りたいので main、そしてBlock Autosquash Commits(yml参照)を合格しないと、マージできないという設定を加えています。

ここまで設定した上で、fixupコミットを含めたPRを作ってみます。
すると、普段はあるマージボタンが消えており、しっかりマージができないようになっています。

スクリーンショット 2023-01-26 15.05.38.png

逆にfixupを解消するとマージができるようになっています。

スクリーンショット 2023-01-26 15.31.22.png

まとめ

今回はblock-autosquash-commits-actionとGitHubのBranch protection ruleと掛け合わせることでfixupコミットのままマージを阻止する仕組みを作成してみました。
各リポジトリに設定を入れないといけないのがネックですが、拡張機能をチームメンバーに入れてもらうなどの手間はなくなるので是非導入を検討をしてみてください。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0