@@ -625,11 +625,7 @@ refactor: Lintエラーの修正 💄
625625
626626:::
627627
628- # 推奨設定
629-
630- GitやGitHub/GitLabの推奨設定をまとめる。本規約にあるGitブランチ運用は、以下の設定が行われている前提で説明している箇所がある。
631-
632- ## git config推奨設定
628+ # git config推奨設定
633629
634630` git config ` の推奨設定を紹介する。特にGitワークフローの設定が重要である。
635631
@@ -664,15 +660,15 @@ git config --global alias.br branch
664660- ` fetch.prune ` : リモートリポジトリで削除されたブランチを削除する
665661 :::
666662
667- ## git-secrets
663+ # git-secrets
668664
669665[ git-secrets] ( https://github.com/awslabs/git-secrets ) を用いることで、ユーザーパスワードや AWS アクセスキーなどの機密情報が含まれる可能性のあるコードなどをGit リポジトリに追加されないようにできる。
670666
671667本規約の推奨は以下。
672668
673669- チームメンバー全員にgit-secretsを導入する
674670
675- ## コミットフックでテスト実行は行わない
671+ # コミットフックでテスト実行は行わない
676672
677673[ git hooks] ( https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%83%95%E3%83%83%E3%82%AF ) を用いて、コミットやプッシュ時に単体テスト実行などのカスタム処理を追加することができる。これを用いると、ローカルでの動作検証などを未実施な状態でレビュー依頼をしてしまうといった状況を未然に防ぎ、開発フローを強制的に適用することができる。
678674
@@ -689,7 +685,9 @@ git config --global alias.br branch
689685実行時間が短いフォーマットであれば、git hooksで実行させると便利なことが多く(CIで違反に気づいて対応する手戻りが減るためである)、必要に応じて導入しても良い。
690686:::
691687
692- ## .gitattribute
688+ # .gitattributes
689+
690+ ## eol
693691
694692チーム開発において開発環境がWindows/Macなど複数存在することは少なくなく、また、Gitリポジトリ上の改行コードは統一した方が余計な差分が生じず扱いやすくなる。このときよく用いるのが、 ` core.autocrlf ` という設定である。
695693
@@ -738,13 +736,53 @@ testdata/eol/input1.cs: eol: crlf
738736
739737:::
740738
741- ## .gitignore
739+ ## linguist-generated
740+
741+ 自動生成で変更が発生し、かつ大量の変更が頻繁に発生する場合には、レビュワーが毎回レビューをすることは効率的でない。
742+
743+ ` .gitattributes ` で ` linguist-generated=true ` の設定を行うことで、差分をデフォルトで表示させず、プルリクエストの可視性を向上させることができる。
744+
745+ ``` sh .gitattributes
746+ # 自動生成されたHTMLファイルの差分を無視する
747+ /path/to/generated/* .html linguist-generated=true
748+ ```
749+
750+ 上記の設定で ` /path/to/generated/main.html ` をコミットすると、差分が以下のように非表示となる(Load diffをクリックすることで差分表示は可能)。
751+
752+ ![ プルリクエストのFile changedでmain.htmlの差分がLoad diffと表示] ( no_diff.png )
753+
754+ 本規約の推奨は以下の通り。
755+
756+ - ツールなどによる生成ファイルをレビュー対象外とする場合は、` linguist-generated=true ` を設定し、レビュアーの負荷を下げる
757+ - レビュアーは差分が省略された場合は、レビュー対象外としてファイルの中身の確認は任意とする
758+
759+ ::: tip 生成コードをレビュー対象としたい場合
760+
761+ GitHubでは、[ 言語毎に生成ファイルと判定する処理] ( https://github.com/github-linguist/linguist/blob/v9.0.0/lib/linguist/generated.rb ) があり、例えツールで作成されたファイルであっても、レビュー確認を必須としたい場合には、クリックする手間が増える分、逆に非効率になる。
762+
763+ 例えば、Javaなど複数の言語では3行目までに ` Generated by the protocol buffer compiler. DO NOT EDIT! ` が含まれていると[ Protocol Bufferの生成コードとみなされる] ( https://github.com/github-linguist/linguist/blob/63cfd70d54ee8f76c41a73fe56689ed8229c9622/lib/linguist/generated.rb#L348-L359 ) 。
764+
765+ もし、明示的に差分を表示させたい場合、` linguist-generated=false ` を設定する必要がある。
766+
767+ ``` sh .gitattributes
768+ # 以下はコード生成されたファイルだが、レビュー対象としたいためlinguist-generated=falseを設定し、差分を表示させる
769+ /path/to/generated/* .java linguist-generated=false
770+ ```
771+
772+ :::
773+
774+ 参考:
775+
776+ - [ 変更したファイルの GitHub での表示方法をカスタマイズする - GitHub Docs] ( https://docs.github.com/ja/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github )
777+ - [ GitHubでファイル差分が表示されない!?レビューを快適にするための差分の非表示ロジックを解説] ( https://zenn.dev/hacobell_dev/articles/show-diff-in-github )
778+
779+ # .gitignore
742780
743781Gitで管理したくないファイル名のルールを定義する` .gitignore ` ファイルも入れる。ウェブフロントエンドであれば新規プロジェクトを作成すると大抵作成されるのでそれを登録すれば良いが、もしない場合、あるいは複数の言語を使っている場合などは[ GitHubが提供するテンプレート] ( https://github.com/github/gitignore ) を元に作成すると良い。GlobalフォルダにはWindows/macOSのOS固有設定や、エディタ設定などもある。
744782
745783環境設定を` .env ` で行うのが一般的になってきているが、` .env.local ` 、` .env.dev.local ` といった` .local ` がついたファイルはクレデンシャルなどの機微な情報を扱うファイルとして定着しているため、 ` *.local ` も追加すると良い。
746784
747- ## 個人用のファイルをGit管理対象外とする
785+ # 個人用のファイルをGit管理対象外とする
748786
749787` .gitignore ` を用いると、チームでGit対象外とするファイルを一律で設定できる。
750788
@@ -759,7 +797,7 @@ Gitで管理したくないファイル名のルールを定義する`.gitignore
759797
760798- [ 個人的Gitおすすめtips 7選 #GitHub - Qiita] ( https://qiita.com/hichika/items/f3c980dd069df0f3a56e )
761799
762- ## Pull Request / Merge Request テンプレート
800+ # Pull Request / Merge Request テンプレート
763801
764802GitHubやGitLabでは、プルリクエスト作成時のテンプレートを作ることができる。チームでプルリクエストで書いてほしいことを明示的にすることで、レビュー効率の向上や障害調査に役立てることができる。
765803
@@ -784,15 +822,15 @@ GitHubでは `.github/PULL_REQUEST_TEMPLATE.md` に記載する。(GitLabで
784822- [ ] 今回のPRでは未対応の残課題があればIssueに起票した
785823```
786824
787- ## GitHub推奨設定
825+ # GitHub推奨設定
788826
789827業務利用でのチーム開発を想定しており、リポジトリは以下の条件を満たす前提とする。
790828
791829- プライベートリポジトリ
792830- Organization配下に作成
793831- Teamsプラン以上の有料契約(※プロテクトブランチの機能などを利用するために必要)
794832
795- ### General
833+ ## General
796834
797835| Category | Item | Value | Memo |
798836| ------------- | ---------------------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------ |
@@ -805,7 +843,7 @@ GitHubでは `.github/PULL_REQUEST_TEMPLATE.md` に記載する。(GitLabで
805843| | Automatically delete head branches | ✅️ | マージ後にfeature branchを削除するため有効にする |
806844| Pushes | Limit how many branches and tags can be updated in a single push | 5 | git push origin –mirrorで誤ってリモートブランチを破壊しないようにする。推奨値の5を設定する |
807845
808- ### Access
846+ ## Access
809847
810848| Category | Item | Value | Memo |
811849| ----------------------- | ------------- | ---------- | ----- |
@@ -818,9 +856,9 @@ GitHubでは `.github/PULL_REQUEST_TEMPLATE.md` に記載する。(GitLabで
818856- 「Admin」権限は、マネージャークラスに対して合計2~ 3名を付与し、属人化しないようにする
819857 - 1名でも、4名以上でもNGとする
820858
821- ### Code and automation
859+ ## Code and automation
822860
823- #### Branches
861+ ### Branches
824862
825863Branch protection rules にdevelop, mainなど永続的なブランチに保護設定を追加する。
826864
@@ -843,28 +881,28 @@ developブランチに対し「require linear history」を選択することを
843881
844882[ ^ 1 ] : https://zenn.dev/daku10/articles/github-merge-guardian
845883
846- #### Tags
884+ ### Tags
847885
848886| Category | Item | Value | Memo |
849887| -------- | ------------ | -------------------- | -------------------------------------------------------- |
850888| | Protect tags | v[ 0-9] +.[ 0-9] +.[ 0-9] | セマンティックバージョニングに則ったタグのみ、削除を防ぐ |
851889
852- #### GitHub Actions
890+ ### GitHub Actions
853891
854892| Category | Item | Value | Memo |
855893| ------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----- | ---- |
856894| Actions permissions | Allow asset-taskforce, and select non-asset-taskforce, actions and reusable workflows > Allow actions created by GitHub | ✅️ | |
857895| | Allow asset-taskforce, and select non-asset-taskforce, actions and reusable workflows > Allow actions Marketplace verified creators | ✅️ | |
858896
859- #### Code security and analysis
897+ ### Code security and analysis
860898
861899| Category | Item | Value | Memo |
862900| ---------- | --------------------------- | ----- | ------------------------------------------ |
863901| Dependabot | Dependabot alerts | ✅️ | 依存パッケージのアップデートを検知するため |
864902| | Dependabot security updates | ✅️ | |
865903| | Dependabot version updates | ✅️ | |
866904
867- ## GitLab推奨設定
905+ # GitLab推奨設定
868906
869907- GitHubの「Automatically delete head branches」
870908 - マージリクエストから「Delete source branch」オプションを有効にすることが該当
0 commit comments