Ist es möglich, git diff so zu konfigurieren, dass Einrückung und Syntax berücksichtigt werden? Ich spreche nicht über das Ignorieren von Einrückungen und Leerstellen, sondern um Leerzeilen, Einrückungsebenen und möglicherweise Klammern zu verwenden, um die alten Zeilen an neue Zeilen anzupassen.Git Diff-Algorithmus, der Funktionen nicht auseinander reißt? (sprachsensitives diff)
z. git diff schneidet oft durch Funktionen und deren Docblock, wie folgt aus:
class C {
/**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
+
+ /**
* Gets your foo up to date.
*/
function foo() {
Wenn ich würde es vorziehen,
class C {
+
+ /**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
/**
* Gets your foo up to date.
*/
function foo() {
In diesem Beispiel noch ganz harmlos ist, aber es gibt Beispiele, bei denen Funktionen und deren Docblock sind wirklich auseinander gerissen wegen der gierigen und naiven diff Implementierung.
Hinweis: Ich habe bereits *.php diff=php
in ~/.gitattributes
konfiguriert.
EDIT: Ein anderes Beispiel: Hier git diff mischt eine Eigenschaft Docblock mit einem Verfahren Docblock:
/**
- * @var int
+ * @param string $str
*/
Ich habe den Verdacht, die Antwort wird in dem Diff-Algorithmus Sie wählen, aber ich konnte man nicht finden, die in der Art und Weise gearbeitet Sie wollen. – sevenseacat
Wie wählen Sie einen Algorithmus? – donquixote
Hat Geduld etwas damit zu tun? – donquixote