言語対応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ドライバーの恩恵を受けます。改善されたハンクヘッダーにより、各変更の関数コンテキストが即座に表示され、コードレビューが高速化されます。

試してみる — .gitattributes Generator

フルツールを開く