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
(複数人によって実装されたコミットであることを表現する)を試した.特にモブプログラミングのときに使うと便利そうだった.
関連資料
今回引用したスライドは以下で紹介している.