言語対応Diffドライバーを設定する
Python、Java、Go、Rustなどの言語で関数レベルのdiffヘッダーを取得するための.gitattributesでのdiff=language属性の設定方法。
Diff Settings
詳細な説明
言語対応Diffドライバー
Gitには、git diff出力の可読性を向上させる言語固有のdiffドライバーのビルトインサポートがあります。汎用のコンテキスト行ではなく、diffハンクヘッダーに変更を含む関数、メソッド、またはクラスが表示されます。
設定
# 言語固有のdiff
*.py text diff=python
*.java text diff=java
*.kt text diff=kotlin
*.go text diff=golang
*.rs text diff=rust
*.rb text diff=ruby
*.php text diff=php
*.c text diff=cpp
*.cpp text diff=cpp
*.h text diff=cpp
*.cs text diff=csharp
*.html text diff=html
*.css text diff=css
*.md text diff=markdown
Before and After
diff=pythonなし:
@@ -42,7 +42,7 @@
return result
diff=pythonあり:
@@ -42,7 +42,7 @@ def calculate_total(items):
return result
関数名calculate_total(items)がハンクヘッダーに表示され、どの関数が変更されたかが即座にわかります。
サポートされている言語
Gitには以下の言語のビルトインword-regexパターンが含まれています:
| ドライバー | ファイルタイプ |
|---|---|
python |
.py、.pyx |
java |
.java、.gradle |
kotlin |
.kt、.kts |
golang |
.go |
rust |
.rs |
ruby |
.rb、.rake |
php |
.php |
cpp |
.c、.cpp、.h、.hpp |
csharp |
.cs |
html |
.html、.htm |
css |
.css、.scss |
markdown |
.md |
カスタムDiffドライバー
.gitconfigでカスタムドライバーを定義できます:
[diff "swift"]
xfuncname = "^[ \t]*(class|struct|enum|protocol|func|extension)[ \t].*$"
次に.gitattributesで参照します:
*.swift text diff=swift
ユースケース
`git diff`やプルリクエストのdiffを通じてコードをレビューするすべての開発チームは、言語対応diffドライバーの恩恵を受けます。改善されたハンクヘッダーにより、各変更の関数コンテキストが即座に表示され、コードレビューが高速化されます。