Можно ли настроить git diff на уважение отступов и синтаксиса? Я не говорю об игнорировании отступов и пробелов, а вместо того, чтобы использовать пустые строки, уровни отступов и, возможно, скобки, чтобы помочь сопоставить старые строки с новыми строками.
например. git diff часто прорезает функции и их докблоки, например:
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
.
EDIT: Другой пример: Здесь git diff смешивает свойство docblock с методом docblock:
/**
- * @var int
+ * @param string $str
*/