~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/textmerge.py

  • Committer: John Arbash Meinel
  • Date: 2007-05-31 20:29:04 UTC
  • mto: This revision was merged to the branch mainline in revision 2499.
  • Revision ID: john@arbash-meinel.com-20070531202904-34h7ygudo7qq9ha1
Update the code so that symlinks aren't cached at incorrect times
and fix the tests so that they don't assume files and symlinks
get cached even when the timestamp doesn't declare them 'safe'.

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])