On Thu, Jan 01, 2009 at 05:56:13PM -0800, Linus Torvalds wrote: > See above - I really don't think this has anything to do with "patience vs > non-patience". It's more akin to the things we do for our merge conflict > markers: if we have two merge conflicts next to each other, with just a > couple of lines in between, we coalesce the merge conflicts into one > larger one instead. But patience diff does more than that. Take a look at "git diff" and "git diff --patience" output below (taken from [1]). You can see that patience diff produces two separate hunks, one removing a function and one adding a function. Merging consecutive diff fragments would have produced one big hunk instead. *** git diff ****************************** git diff --patience ********** #include <stdio.h> | #include <stdio.h> | +int fib(int n) |-// Frobs foo heartily +{ |-int frobnitz(int foo) + if(n > 2) |+int fib(int n) + { | { + return fib(n-1) + fib(n-2); |- int i; + } |- for(i = 0; i < 10; i++) + return 1; |+ if(n > 2) +} | { + |- printf("Your answer is: "); // Frobs foo heartily |- printf("%d\n", foo); int frobnitz(int foo) |+ return fib(n-1) + fib(n-2); { | } int i; |+ return 1; for(i = 0; i < 10; i++) | } { | - printf("Your answer is: "); |-int fact(int n) printf("%d\n", foo); |+// Frobs foo heartily } |+int frobnitz(int foo) } | { |- if(n > 1) -int fact(int n) |+ int i; -{ |+ for(i = 0; i < 10; i++) - if(n > 1) | { - { |- return fact(n-1) * n; - return fact(n-1) * n; |+ printf("%d\n", foo); - } | } - return 1; |- return 1; -} | } - | int main(int argc, char **argv) | int main(int argc, char **argv) { | { - frobnitz(fact(10)); |- frobnitz(fact(10)); + frobnitz(fib(10)); |+ frobnitz(fib(10)); } | } [1] http://alfedenzo.livejournal.com/170301.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html