GitHub の Co-authored-by(複数人によって実装されたコミットであることを表現する)を試した.OSS リポジトリのコミットログを眺めているときにたまーに見かけることはあったけど,今まで意識して使ったことはなかった.詳しくは以下のドキュメントとブログに載っている.
仕組み
仕組みは簡単で「コミットメッセージ」を複数行にして,以下のフォーマットを追加すると GitHub 側で認識してくれる.
Co-authored-by: name <name@example.com> Co-authored-by: another-name <another-name@example.com>
さっそく試す.今回は GitHub アカウント kakakakakku と検証用 GitHub アカウント kakakakakku-sandbox を使う.以下のように「通常のコミット」と「Co-authored-by を使ったコミット」を連続で行った.すると GitHub で「複数人として(アイコンが見にくいけど💦)」表示できた!
$ git commit -m'Updated README.md' $ git commit -m'Updated README.md quote> quote> Co-authored-by: kakakakakku-sandbox <81434062+kakakakakku-sandbox@users.noreply.github.com>'

ちなみに Co-authored-by にはメールアドレスを指定する必要がある.メールアドレスを公開したくない場合は GitHub アカウントごとに使えるプライベートメールアドレス(noreply メールアドレスと言われる)を使える.今回 kakakakakku-sandbox はプライベートメールアドレスを使っている.プライベートメールアドレスに関しては以下のドキュメントに載っている.
とは言え,毎回コミットごとに Co-authored-by を設定するのは面倒なので,Git の Commit Template(git commit --template)を使えば繰り返しコミットもしやすくなる.
モブプログラミングに使う
モブプログラミング(特にリモート)では,コミットを積み上げながらドライバーを交代していくことが多いと思う.Git Handover とも言う.過去に Git Handover を行っていたときはドライバーによるコミットを複数積み上げて,1個のプルリクエストを作っていた.以下は2018年に紹介した事例のスライドを引用している.

しかし,全てのコミットはナビゲーターのサポートがあって実現できたとも言えるし,コミットからドライバー以外の情報が得られないとも言えるため,その観点ではうまく表現できていないかもしれない.Co-authored-by を使えば,以下のように Alice と Bob と3人で実装したようにコミットできる.モブプログラミングと相性が良さそう!
$ git commit -m'○○を実装した quote> quote> Co-authored-by: Alice <alice@example.com> quote> Co-authored-by: Bob <bob@example.com>'

mob コマンドと Co-authored-by
そして Git Handover を簡単に行える mob コマンドを前に紹介した.実は mob コマンドにも Co-authored-by は実装されていて,最後に mob done を実行したときに自動的に Co-authored-by が追加されるようになっている.便利!やっぱりモブプログラミングと Co-authored-by は相性が良さそう!
# 1人目 $ mob start $ mob next # 2人目 $ mob start $ mob next # 3人目 $ mob start $ mob done
まとめ
今まで意識して使ったことがなかった GitHub の Co-authored-by(複数人によって実装されたコミットであることを表現する)を試した.特にモブプログラミングのときに使うと便利そうだった.
関連資料
今回引用したスライドは以下で紹介している.