Neue Git Diff-Verdichtungsheuristik funktioniert nicht

Aktualisiere

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

Ursprüngliche Frage ...

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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage