/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/textmerge.py

  • Committer: Martin Pool
  • Date: 2007-10-03 08:06:44 UTC
  • mto: This revision was merged to the branch mainline in revision 2901.
  • Revision ID: mbp@sourcefrog.net-20071003080644-oivy0gkg98sex0ed
Avoid internal error tracebacks on failure to lock on readonly transport (#129701).

Add new LockFailed, which doesn't imply that we failed to get it because of
contention.  Raise this if we fail to create the pending or lock directories
because of Transport errors.

UnlockableTransport is not an internal error.

ReadOnlyLockError has a message which didn't match its name or usage; it's now
deprecated and callers are updated to use LockFailed which is more appropriate.

Add zero_ninetytwo deprecation symbol.

Unify assertMatchesRe with TestCase.assertContainsRe.

When the constructor is deprecated, just say that the class is deprecated, not
the __init__ method - this works better with applyDeprecated in tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
#
17
 
# Author: Martin Pool <mbp@canonical.com>
 
17
# Author: Martin Pool <mbp@canonical.com> 
18
18
#         Aaron Bentley <aaron.bentley@utoronto.ca>
19
19
 
20
20
 
29
29
    This is an iterable of tuples of lists of lines.
30
30
    Each tuple may have a length of 1 - 3, depending on whether the region it
31
31
    represents is conflicted.
32
 
 
 
32
    
33
33
    Unconflicted region tuples have length 1.
34
34
    Conflicted region tuples have length 2 or 3.  Index 1 is text_a, e.g. THIS.
35
35
    Index 1 is text_b, e.g. OTHER.  Index 2 is optional.  If present, it
60
60
                    yield line
61
61
            else:
62
62
                yield self.a_marker
63
 
                for line in lines[0]:
 
63
                for line in lines[0]: 
64
64
                    yield line
65
65
                yield self.split_marker
66
 
                for line in lines[1]:
 
66
                for line in lines[1]: 
67
67
                    yield line
68
68
                yield self.b_marker
69
69
 
120
120
    regions produce conflicts.
121
121
    """
122
122
 
123
 
    def __init__(self, lines_a, lines_b, a_marker=TextMerge.A_MARKER,
124
 
                 b_marker=TextMerge.B_MARKER,
 
123
    def __init__(self, lines_a, lines_b, a_marker=TextMerge.A_MARKER, 
 
124
                 b_marker=TextMerge.B_MARKER, 
125
125
                 split_marker=TextMerge.SPLIT_MARKER):
126
126
        TextMerge.__init__(self, a_marker, b_marker, split_marker)
127
127
        self.lines_a = lines_a
128
128
        self.lines_b = lines_b
129
129
 
130
130
    def _merge_struct(self):
131
 
        """Return structured merge info.
 
131
        """Return structured merge info.  
132
132
        See TextMerge docstring.
133
133
        """
134
134
        sm = bzrlib.patiencediff.PatienceSequenceMatcher(None, self.lines_a, self.lines_b)
139
139
            yield(self.lines_a[pos_a:ai], self.lines_b[pos_b:bi])
140
140
            # matching lines
141
141
            yield(self.lines_a[ai:ai+l],)
142
 
            pos_a = ai + l
 
142
            pos_a = ai + l 
143
143
            pos_b = bi + l
144
144
        # final non-matching lines
145
145
        yield(self.lines_a[pos_a:-1], self.lines_b[pos_b:-1])