使いたい
git config core.whitespace tab-in-indent,tabwidth=4
git diff を使用するときに間違ったインデントがある場合に警告が表示されるように、C++ ファイルに対してこれらの設定を行いたいと考えています。ただし、タブが必要な Makefile もあります。ファイルごとに異なる空白設定を構成する方法はありますか?
使いたい
git config core.whitespace tab-in-indent,tabwidth=4
git diff を使用するときに間違ったインデントがある場合に警告が表示されるように、C++ ファイルに対してこれらの設定を行いたいと考えています。ただし、タブが必要な Makefile もあります。ファイルごとに異なる空白設定を構成する方法はありますか?
John SzakmeisterとUpAndAdamによる回答への追加。
.gitattributes
ファイル固有のルールを設定するには、プロジェクトのルートにファイルを追加する必要があります。docs
(バージョン管理したくない場合は、次のように追加できます.git/info/attributes
。)
# Macro's
[attr]cpp diff=cpp whitespace=trailing-space,space-before-tab,indent-with-non-tab,tabwidth=4
[attr]makefile whitespace=trailing-space,indent-with-non-tab,space-before-tab,tabwidth=4
*.[ch] cpp
*.[ch]pp cpp
makefile makefile
s.makefile makefile
*
はすべてに[ch]
一致し、文字c
との両方に一致しますh
。 whitespace
オプションには、警告する内容がリストされています。
tabwidth
、whitespace
タブとスペース文字をいつ、どのように置き換えるかを決定するために使用されます。(デフォルト値は 8 文字です。) tab-indent
タブを使用したインデントはエラーと見なされます。 indent-with-non-tab
は、行頭に 4 つ以上のスペースが使用されている場合にここで警告します。3 つのスペースでのインデントが受け入れられることに注意してください。タブの前後に隠れているスペースをキャッチするためspace-before-tab
diff=cpp
C および C++ ファイルのよりスマートな差分を有効にします。trailing-space
行末およびファイルの終わりの末尾の空白文字について警告します。.gitattributes
が適用されているかを確認するには、次を使用します。git check-attr --all -- <pathname>
<pathname>
既存のファイルである必要はありません。(つまり、some.cpp
動作します)
whitespace
ルールをテストするには:git diff
。trailing space
trailing tab
2 spaces
4 spaces
tab
tab and space
space and tab
tab, space, tab
問題は呼び出し時にマークされ、呼び出し時git diff
にチェック/修正されますgit -apply ---whitespace=[warn|error|fix]
。のデフォルトの動作を次のように設定git apply
します。
git config --[global|local] apply.whitespace [warn|error|fix]
jzakmeister が私のコメントから更新したように、これはあなたが尋ねたことのサブセクションです。
-
「makefile-ish」エントリで修飾子を使用して、tab-in-indent をエラーと呼ばないようにしていることに注意してください。
makefile text whitespace=-tab-in-indent,trailing-space,tabwidth=4
Makefile text whitespace=-tab-in-indent,trailing-space,tabwidth=4
*.mk text whitespace=-tab-in-indent,trailing-space,tabwidth=4
*.cpp text diff=cpp whitespace=tab-in-indent,trailing-space,tabwidth=4
*.hpp text diff=cpp whitespace=tab-in-indent,trailing-space,tabwidth=4