Neue Git Diff-Verdichtungsheuristik funktioniert nicht
Dies ist jetzt gelöst, dank @toreks Antwort
Ich musste mehr Zeilen über dem neuen Zusatz haben, damit Git den diff'ed-Block nach oben verschieben konnte, und damit meine ich:
+a
+b
+c
+
+["foo", "bar", "baz"].map do |i|
+ i
+end
+
["foo", "bar", "baz"].map do |i|
i.upcase
end
Hinweis: Ich habe versucht, mit einem einzelnen Zeilenumbruch anstelle vona\nb\nc\n
und es hat auch geklappt
Ich verwende Git 2.9 unter Mac OSX
Hier ist ein reduzierter Testfall:
$ mkdir git-highlight && cd git-highlight
$ touch foo.rb
Ich füge den folgenden Inhalt hinzu und übergebe ihn:
["foo", "bar", "baz"].map do |i|
i.upcase
end
Nun ändere ich die Datei so, dass sie den folgenden Inhalt hat:
["foo", "bar", "baz"].map do |i|
i
end
["foo", "bar", "baz"].map do |i|
i.upcase
end
Wenn ich eines von beiden ausführen solltegit diff
odergit diff --compaction-heuristic
dann bekomme ich folgendesunerwarte Ausgabe
diff --git a/foo.rb b/foo.rb
index 9056b22..f0d289a 100644
--- a/foo.rb
+++ b/foo.rb
@@ -1,3 +1,7 @@
["foo", "bar", "baz"].map do |i|
+ i
+end
+
+["foo", "bar", "baz"].map do |i|
i.upcase
end
Wenn Sie diesen Blog-Beitrag von GitHub @ leshttps: //github.com/blog/2188-git-2-9-has-been-release Ich muss glauben, dass meine Ausgabe ungefähr so aussehen sollte:
+["foo", "bar", "baz"].map do |i|
+ i
+end
+
["foo", "bar", "baz"].map do |i|
i.upcase
end
Die Idee, der Diffing-Algorithmus von git zu sein, ist intelligenter und in der Lage, den Blockwechsel zu identifizieren.
Ich habe auch versucht, das Folgende zu meinem @ hinzuzufüg~/.gitconfig
aber es macht keinen Unterschied für das Ergebnis, ich bekomme immer noch die unerwartete Ausgabe:
[diff]
compactionHeuristic = true
Irgendwelche Ideen, was ich hier vermisse?