~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/merge3.py

  • Committer: Martin Pool
  • Date: 2005-07-05 09:55:35 UTC
  • Revision ID: mbp@sourcefrog.net-20050705095535-2c3f9238c03c358c
- New Merge3.merge_annotated method for debugging.

- Remove dead code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
43
43
        return None
44
44
 
45
45
 
46
 
def threeway(baseline, aline, bline):
47
 
    if baseline == aline:
48
 
        return bline
49
 
    elif baseline == bline:
50
 
        return aline
51
 
    else:
52
 
        return [aline, bline]
53
 
 
54
46
 
55
47
 
56
48
class Merge3(object):
109
101
 
110
102
 
111
103
 
 
104
    def merge_annotated(self):
 
105
        """Return merge with conflicts, showing origin of lines.
 
106
 
 
107
        Most useful for debugging merge.        
 
108
        """
 
109
        for t in self.merge_regions():
 
110
            what = t[0]
 
111
            if what == 'unchanged':
 
112
                for i in range(t[1], t[2]):
 
113
                    yield 'u | ' + self.base[i]
 
114
            elif what == 'a' or what == 'same':
 
115
                for i in range(t[1], t[2]):
 
116
                    yield what[0] + ' | ' + self.a[i]
 
117
            elif what == 'b':
 
118
                for i in range(t[1], t[2]):
 
119
                    yield 'b | ' + self.b[i]
 
120
            elif what == 'conflict':
 
121
                yield '<<<<\n'
 
122
                for i in range(t[3], t[4]):
 
123
                    yield 'A | ' + self.a[i]
 
124
                yield '----\n'
 
125
                for i in range(t[5], t[6]):
 
126
                    yield 'B | ' + self.b[i]
 
127
                yield '>>>>\n'
 
128
            else:
 
129
                raise ValueError(what)
 
130
        
 
131
        
 
132
 
 
133
 
 
134
 
112
135
    def merge_groups(self):
113
136
        """Yield sequence of line groups.  Each one is a tuple:
114
137
 
319
342
 
320
343
    m3 = Merge3(base, a, b)
321
344
 
322
 
    sys.stdout.writelines(m3.merge_lines(name_a=argv[1], name_b=argv[3]))
 
345
    # sys.stdout.writelines(m3.merge_lines(name_a=argv[1], name_b=argv[3]))
 
346
    sys.stdout.writelines(m3.merge_annotated())
323
347
 
324
348
 
325
349
if __name__ == '__main__':