GitHubActionsでリポジトリ内の全てのコミット履歴を取得できるようにする
はじめに
GitHubActionsのジョブ内において、以下のコマンドを使ってレポジトリの全コミット数を取得したい場面があった。
git rev-list HEAD --count
しかし、どうやっても1
が出力される。デバッグしてみると直近の1コミット分しか存在していないようだった。
原因と方法
GitHubActionsでリポジトリにチェックアウトするアクションはactions/checkout@v3
というものを使っている。
この公式ドキュメントを読むと、どうやらデフォルトでは単一のコミットしか取得されないようだ。
Only a single commit is fetched by default, for the ref/SHA that triggered the workflow. Set fetch-depth: 0 to fetch all history for all branches and tags. Refer here to learn which commit $GITHUB_SHA points to for different events.
上記引用にも書かれているが、全てのコミット履歴を取得するにはfetch-depth: 0
を指定する必要があった。
以下がGitHubActionsの設定例になる。
jobs:
test:
name: Run test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0 # これを指定する
- run: git rev-list HEAD --count # 全てのコミット履歴の数が出力されるようになった!
これで全てのコミット履歴を取得できるようになった。
おわり
いつも- users: actions/checkout@v3
としか使っていなかったアクションだが、調べてみると他にも渡せるオプションが色々あった。
ツールは使う前にREADMEにざっと目を通しておきたい。