GitHubのヘビーユーザーだと一部は当たり前だったり、細かい部分は個性や好みが出たり、GitHubは割と頻繁に細かい新機能が追加されるので意外と知られていないものがあったり、などなどあると思いますが、現状の自分がよく行っている設定を、何かの参考になればと思って雑多に列挙しておきます。
自分がGitHubで活動してるrepoの大半はScala関連なので、Scala特有の色々(scala-stewardなど含む)も、書こうと思えば大量にあるけれど、ひとまずScalaにほぼ関係ない、一般的なGitHubの使い方に関する部分だけ今回は書きました。
(気が向いたらScala特有のアレコレを別途書く・・・?)
列挙の順番には特に意味はないです。
列挙してないものでも場合によっては設定しているものや、書き忘れているものがあるかもしれませんが、とりあえず簡単に思いついたものだけ。
機能としては知っていて、機会があれば使いたいな〜と思うものでも(特にmerge queueなど)、複数人で大規模というか活発な開発しないと必要にならない、問題にならないものは設定してないものも割とある。
- wiki, discussion, projectなどで使わない場合は無効化
- 使う予定がないのに表示されていても邪魔なだけなので
- 万が一、後から使いたくなったら、その時に有効化すればいいので
- 使う予定なさそうなのに無効化をやってない人多くいるけど、個人的にはこういう部分無駄に気になる性格
- GitHub ActionsのCI設定
- GitHub Actions使うか?他のCIサービスを使うか?はともかく、よほど使い捨てでない限り、一定以上真面目なprojectでCI自体を設定しない人はあまりいないと思うが
- 内容についてはいくらでも語れることがあるけれど、今回は触れない
- LICENSEファイルをトップレベルに置く
- 使い捨てというかissue報告用の再現projectなら https://en.wikipedia.org/wiki/Unlicense にするし、それ以外は大抵は個人的には理由なければMITだが、いずれにせよほぼ必ず置くようにしてる
- GitHubに認識してもらうためにも、READMEやbuildファイルにライセンスの名前やURLを書くだけではなく(それはそれで行った方がいいが)、直接置くことも重要
- CODEOWNERSを置く
- pull requestが来たら、積極的なお知らせが欲しい、という理由で大抵置いてる。自分だけを雑に指定したファイルでいいから置く
- 複数人で開発してる場合にレビュアー自動割り当てなどの用途が本来な感じがするので、pull reqきたこと自体を他の方法で気が付けるならば、別にこれを置くことによって気がつく必要は必ずしもない、とは思う
- https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
- dependabot.ymlでGitHub Actionsのupdateが来るようにする
- renovateなどの他のツールが使いたい人はそれ使えばいいとは思う
- CLAやライセンスの問題でbotのpull reqは絶対受け付けないぞ!全部手動でやるぞ!、みたいな謎の(?)強い意志がない限り、こういう便利なものはどんどん活用していこう
- https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates
Always suggest updating pull request branches
有効化- だいぶ好みの問題感もあるが、個人的には気軽に押したいので
- 自分が他人のrepoにpull reqした時でも押したいので、(force push大嫌いみたいな) こだわりがないならば、有効化されてると嬉しい
Allow auto-merge
有効化- https://mergify.com/ のような他のツール使っているならともかく、CI待ってからmergeボタン押すのは面倒過ぎる
- 後述するようにbranch protection ruleなどを必ずしっかり設定する必要は出てくる
Automatically delete head branches
- 99%勝手にやって欲しいし、万が一backport的なことで消してはいけないbranchからpull reqするならば、どうせそちらを
protection rules
で消えないようにしてるので、いずれにせよ勝手に消えて問題ない
- 99%勝手にやって欲しいし、万が一backport的なことで消してはいけないbranchからpull reqするならば、どうせそちらを
Branch protection rules
設定- Releases, Packages, Deploymentsあたりで使う予定がない場合無効化
- Description, Topicsなど適当に?設定
- READMEは、場合によってすごく簡素だったり、逆に色々書く場合もあるけれど、詳細は今回は書かない
- pull reqやissueのtemplate、CODE_OF_CONDUCT.md, CONTRIBUTING.md などなどは、どんなに丁寧に書いてもどうせ無視される時は無視されるし、結構大きく活発にならないとそこまで必要にならないので、あまり置いてない