##// END OF EJS Templates
bdiff: adjust criteria for getting optimal longest match in the A side middle...
Mads Kiilerich -
r30429:38ed5488 default
parent child Browse files
Show More
@@ -151,7 +151,7 b' static int longest_match(struct bdiff_li'
151 if (a2 - a1 > 30000)
151 if (a2 - a1 > 30000)
152 a1 = a2 - 30000;
152 a1 = a2 - 30000;
153
153
154 half = (a1 + a2) / 2;
154 half = (a1 + a2 - 1) / 2;
155
155
156 for (i = a1; i < a2; i++) {
156 for (i = a1; i < a2; i++) {
157 /* skip all lines in b after the current block */
157 /* skip all lines in b after the current block */
@@ -177,7 +177,7 b' static int longest_match(struct bdiff_li'
177
177
178 /* best match so far? we prefer matches closer
178 /* best match so far? we prefer matches closer
179 to the middle to balance recursion */
179 to the middle to balance recursion */
180 if (k > mk || (k == mk && (i <= mi || i < half))) {
180 if (k > mk || (k == mk && (i <= mi || i <= half))) {
181 mi = i;
181 mi = i;
182 mj = j;
182 mj = j;
183 mk = k;
183 mk = k;
@@ -88,7 +88,7 b' print("Diff 1 to 3 lines - preference fo'
88 showdiff('a\n', 'a\n' * 3)
88 showdiff('a\n', 'a\n' * 3)
89 print("Diff 1 to 5 lines - preference for adding / removing at the end of sequences:")
89 print("Diff 1 to 5 lines - preference for adding / removing at the end of sequences:")
90 showdiff('a\n', 'a\n' * 5)
90 showdiff('a\n', 'a\n' * 5)
91 print("Diff 3 to 1 lines - preference for adding / removing at the end of sequences:")
91 print("Diff 3 to 1 lines - preference for balanced recursion:")
92 showdiff('a\n' * 3, 'a\n')
92 showdiff('a\n' * 3, 'a\n')
93 print("Diff 5 to 1 lines - this diff seems weird:")
93 print("Diff 5 to 1 lines - preference for balanced recursion:")
94 showdiff('a\n' * 5, 'a\n')
94 showdiff('a\n' * 5, 'a\n')
@@ -67,16 +67,17 b' showdiff('
67 'a\na\na\na\na\n'):
67 'a\na\na\na\na\n'):
68 'a\n'
68 'a\n'
69 2 2 '' -> 'a\na\na\na\n'
69 2 2 '' -> 'a\na\na\na\n'
70 Diff 3 to 1 lines - preference for adding / removing at the end of sequences:
70 Diff 3 to 1 lines - preference for balanced recursion:
71 showdiff(
71 showdiff(
72 'a\na\na\n',
72 'a\na\na\n',
73 'a\n'):
73 'a\n'):
74 0 2 'a\n' -> ''
74 'a\n'
75 'a\n'
75 2 6 'a\na\n' -> ''
76 4 6 'a\n' -> ''
76 Diff 5 to 1 lines - this diff seems weird:
77 Diff 5 to 1 lines - preference for balanced recursion:
77 showdiff(
78 showdiff(
78 'a\na\na\na\na\n',
79 'a\na\na\na\na\n',
79 'a\n'):
80 'a\n'):
80 0 2 'a\n' -> ''
81 0 4 'a\na\n' -> ''
81 'a\n'
82 'a\n'
82 4 10 'a\na\na\n' -> ''
83 6 10 'a\na\n' -> ''
General Comments 0
You need to be logged in to leave comments. Login now