kakakakakku blog

Weekly Tech Blog: Keep on Learning!

GitHub の "Co-authored-by" をモブプログラミングに使う

GitHub の Co-authored-by(複数人によって実装されたコミットであることを表現する)を試した.OSS リポジトリのコミットログを眺めているときにたまーに見かけることはあったけど,今まで意識して使ったことはなかった.詳しくは以下のドキュメントとブログに載っている.

docs.github.com

github.blog

仕組み

仕組みは簡単で「コミットメッセージ」を複数行にして,以下のフォーマットを追加すると 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>'

f:id:kakku22:20220203111352p:plain

ちなみに Co-authored-by にはメールアドレスを指定する必要がある.メールアドレスを公開したくない場合は GitHub アカウントごとに使えるプライベートメールアドレス(noreply メールアドレスと言われる)を使える.今回 kakakakakku-sandbox はプライベートメールアドレスを使っている.プライベートメールアドレスに関しては以下のドキュメントに載っている.

docs.github.com

とは言え,毎回コミットごとに Co-authored-by を設定するのは面倒なので,Git の Commit Template(git commit --template)を使えば繰り返しコミットもしやすくなる.

git-scm.com

モブプログラミングに使う

モブプログラミング(特にリモート)では,コミットを積み上げながらドライバーを交代していくことが多いと思う.Git Handover とも言う.過去に Git Handover を行っていたときはドライバーによるコミットを複数積み上げて,1個のプルリクエストを作っていた.以下は2018年に紹介した事例のスライドを引用している.

f:id:kakku22:20220203111920p:plain

しかし,全てのコミットはナビゲーターのサポートがあって実現できたとも言えるし,コミットからドライバー以外の情報が得られないとも言えるため,その観点ではうまく表現できていないかもしれない.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>'

f:id:kakku22:20220203121356p:plain

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

kakakakakku.hatenablog.com

まとめ

今まで意識して使ったことがなかった GitHub の Co-authored-by(複数人によって実装されたコミットであることを表現する)を試した.特にモブプログラミングのときに使うと便利そうだった.

関連資料

今回引用したスライドは以下で紹介している.

kakakakakku.hatenablog.com