I found a false positive with the new compaction heuristic in v2.9:
-- >8 --
# start with a simple file
cat >file.rb <<\EOF
def foo
do_foo_stuff()
common_ending()
end
EOF
git add file.rb
git commit -m base
# and then add another function with a similar ending
cat >>file.rb <<\EOF
def bar
do_bar_stuff()
common_ending()
end
EOF
-- 8< --
I get this rather unfortunate diff:
$ git diff
diff --git a/file.rb b/file.rb
index bd9d1cb..67fbeba 100644
--- a/file.rb
+++ b/file.rb
@@ -1,5 +1,11 @@
def foo
do_foo_stuff()
+ common_ending()
+end
+
+def bar
+ do_bar_stuff()
+
common_ending()
end
but without the compaction heuristic (or with an older git), I get:
$ git -c diff.compactionHeuristic=false diff
diff --git a/file.rb b/file.rb
index bd9d1cb..67fbeba 100644
--- a/file.rb
+++ b/file.rb
@@ -3,3 +3,9 @@ def foo
common_ending()
end
+
+def bar
+ do_bar_stuff()
+
+ common_ending()
+end
:( The problem is that the common bits are separated from the
interesting bits by a blank line. This is simplified from a real-world
example, but I think you could come up with the same example in C, like:
if (foo) {
do_foo();
something_else();
}
-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html