/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/_patiencediff_py.py

  • Committer: John Arbash Meinel
  • Date: 2008-07-09 21:42:24 UTC
  • mto: This revision was merged to the branch mainline in revision 3543.
  • Revision ID: john@arbash-meinel.com-20080709214224-r75k87r6a01pfc3h
Restore a real weave merge to 'bzr merge --weave'.

To do so efficiently, we only add the simple LCAs to the final weave
object, unless we run into complexities with the merge graph.
This gives the same effective result as adding all the texts,
with the advantage of not having to extract all of them.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
#
14
14
# You should have received a copy of the GNU General Public License
15
15
# along with this program; if not, write to the Free Software
16
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
16
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
 
19
19
from bisect import bisect
49
49
        else:
50
50
            index[line]= i
51
51
    # make btoa[i] = position of line i in a, unless
52
 
    # that line doesn't occur exactly once in both,
 
52
    # that line doesn't occur exactly once in both, 
53
53
    # in which case it's set to None
54
54
    btoa = [None] * len(b)
55
55
    index2 = {}
79
79
            k = len(stacks)
80
80
        # as an optimization, check if the next line comes right after
81
81
        # the previous line, because usually it does
82
 
        elif stacks and stacks[k] < apos and (k == len(stacks) - 1 or
 
82
        elif stacks and stacks[k] < apos and (k == len(stacks) - 1 or 
83
83
                                              stacks[k+1] > apos):
84
84
            k += 1
85
85
        else:
176
176
    length = 0
177
177
    for i_a, i_b in matches:
178
178
        if (start_a is not None
179
 
            and (i_a == start_a + length)
 
179
            and (i_a == start_a + length) 
180
180
            and (i_b == start_b + length)):
181
181
            length += 1
182
182
        else:
230
230
        >>> s.get_matching_blocks()
231
231
        [(0, 0, 2), (3, 2, 2), (5, 4, 0)]
232
232
        """
233
 
        # jam 20060525 This is the python 2.4.1 difflib get_matching_blocks
 
233
        # jam 20060525 This is the python 2.4.1 difflib get_matching_blocks 
234
234
        # implementation which uses __helper. 2.4.3 got rid of helper for
235
235
        # doing it inline with a queue.
236
236
        # We should consider doing the same for recurse_matches