以前にこのような記事を投稿しました。
cherry-pick 運用の地獄から這い上がった話をしよう
一言でまとめれば、会社のプロジェクトでは cherry-pick を使って運用していてとてもつらかったのでがんばって廃止した、という内容です。
そして、今後、二度とこの悪夢のような運用をしないようにするために、プロジェクトが git-flow に準拠しているかどうかを検証する git-flow observer という GitHub Actions を作ったので紹介します。
以下のような YAML をプロジェクトに追加するだけです。廃止場所は .github/workflows/git-flow-observer.yml とします。
# .github/workflows/git-flow-observer.yml
name: "git-flow observer"
on: pull_request
jobs:
git-flow-observer:
if: github.head_ref != 'main' || github.base_ref != 'develop'
runs-on: ubuntu-latest
steps:
- name: "Observe"
uses: noraworld/git-flow-observer@v0.1.0
with:
head: "develop"
base: "main"
"main" と書かれている部分は必要に応じて "master" に置き換えてください。
main ブランチに追加されたコミットを develop ブランチにマージバックせずに新しい PR を作成した場合に失敗します
main ブランチにのみ存在するコミットがマージコミットのみの状態で、develop ブランチにマージする PRmain ブランチにマージする PRmain ブランチにマージする PRmain ブランチから develop ブランチにマージする PR を作成した場合はスキップされます (マージバック PR)失敗した場合は git-flow に準拠していないことがわかります。
もともと、しっかりと git-flow に基づき運用されているプロジェクトであればこれは必要ないかもしれませんが、ぼくが所属しているプロジェクトのように適当な運用になりがちなプロジェクトではこのような仕組みで厳密にチェックするとハッピーになれるかもしれません。