インデントと構文を尊重するように git diff を構成することは可能ですか? インデントとスペースを無視することについて話しているのではなく、古い行と新しい行を一致させるために、空白行、インデント レベル、および場合によっては括弧を使用することです。
例えば git diff はしばしば次のように関数とその docblock をカットします:
class C {
/**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
+
+ /**
* Gets your foo up to date.
*/
function foo() {
私が好むとき
class C {
+
+ /**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
/**
* Gets your foo up to date.
*/
function foo() {
この例ではまだまったく害はありませんが、関数とその docblock が貪欲で単純な diff 実装のために実際に引き裂かれている例があります。
注: で構成済み*.php diff=php
です~/.gitattributes
。
編集: 別の例: ここで git diff はプロパティ docblock とメソッド docblock を混合します:
/**
- * @var int
+ * @param string $str
*/