自分のGitHubのrepositoryで行っている設定

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を置く
  • dependabot.ymlでGitHub Actionsのupdateが来るようにする
  • 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 で消えないようにしてるので、いずれにせよ勝手に消えて問題ない
  • Branch protection rules 設定
    • auto mergeしたいなら必須なので
    • 少なくとも Require status checks to pass before merging はほぼ必ず設定してる
    • status checkを、出来るだけ頻繁に変える必要がないようにGitHub Actionsのyamlの書き方を工夫した方がいいぞ!、などの観点があるが、今回は触れない
    • 他の詳細設定は場合による
  • Releases, Packages, Deploymentsあたりで使う予定がない場合無効化

  • Description, Topicsなど適当に?設定
  • READMEは、場合によってすごく簡素だったり、逆に色々書く場合もあるけれど、詳細は今回は書かない
  • pull reqやissueのtemplate、CODE_OF_CONDUCT.md, CONTRIBUTING.md などなどは、どんなに丁寧に書いてもどうせ無視される時は無視されるし、結構大きく活発にならないとそこまで必要にならないので、あまり置いてない