~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/knit.py

  • Committer: John Arbash Meinel
  • Date: 2006-08-14 16:16:53 UTC
  • mto: (1946.2.6 reduce-knit-churn)
  • mto: This revision was merged to the branch mainline in revision 1919.
  • Revision ID: john@arbash-meinel.com-20060814161653-54cdcdadcd4e9003
Remove bogus entry from BRANCH.TODO

Show diffs side-by-side

added added

removed removed

Lines of Context:
74
74
import warnings
75
75
 
76
76
import bzrlib
77
 
from bzrlib import (
78
 
    cache_utf8,
79
 
    errors,
80
 
    )
 
77
import bzrlib.errors as errors
81
78
from bzrlib.errors import FileExists, NoSuchFile, KnitError, \
82
79
        InvalidRevisionId, KnitCorrupt, KnitHeaderError, \
83
80
        RevisionNotPresent, RevisionAlreadyPresent
85
82
from bzrlib.trace import mutter
86
83
from bzrlib.osutils import contains_whitespace, contains_linebreaks, \
87
84
     sha_strings
 
85
from bzrlib.versionedfile import VersionedFile, InterVersionedFile
88
86
from bzrlib.symbol_versioning import DEPRECATED_PARAMETER, deprecated_passed
89
87
from bzrlib.tsort import topo_sort
90
88
import bzrlib.weave
91
 
from bzrlib.versionedfile import VersionedFile, InterVersionedFile
92
89
 
93
90
 
94
91
# TODO: Split out code specific to this format into an associated object.
165
162
        internal representation is of the format:
166
163
        (revid, plaintext)
167
164
        """
168
 
        decode_utf8 = cache_utf8.decode
169
165
        lines = []
170
166
        for line in content:
171
167
            origin, text = line.split(' ', 1)
172
 
            lines.append((decode_utf8(origin), text))
 
168
            lines.append((origin.decode('utf-8'), text))
173
169
        return KnitContent(lines)
174
170
 
175
171
    def parse_line_delta_iter(self, lines):
186
182
        internal representation is
187
183
        (start, end, count, [1..count tuples (revid, newline)])
188
184
        """
189
 
        decode_utf8 = cache_utf8.decode
190
185
        result = []
191
186
        lines = iter(lines)
192
187
        next = lines.next
198
193
            while remaining:
199
194
                origin, text = next().split(' ', 1)
200
195
                remaining -= 1
201
 
                contents.append((decode_utf8(origin), text))
 
196
                contents.append((origin.decode('utf-8'), text))
202
197
            result.append((start, end, count, contents))
203
198
        return result
204
199
 
207
202
 
208
203
        see parse_fulltext which this inverts.
209
204
        """
210
 
        encode_utf8 = cache_utf8.encode
211
 
        return ['%s %s' % (encode_utf8(o), t) for o, t in content._lines]
 
205
        return ['%s %s' % (o.encode('utf-8'), t) for o, t in content._lines]
212
206
 
213
207
    def lower_line_delta(self, delta):
214
208
        """convert a delta into a serializable form.
215
209
 
216
210
        See parse_line_delta which this inverts.
217
211
        """
218
 
        encode_utf8 = cache_utf8.encode
219
212
        out = []
220
213
        for start, end, c, lines in delta:
221
214
            out.append('%d,%d,%d\n' % (start, end, c))
222
 
            out.extend(encode_utf8(origin) + ' ' + text
223
 
                       for origin, text in lines)
 
215
            for origin, text in lines:
 
216
                out.append('%s %s' % (origin.encode('utf-8'), text))
224
217
        return out
225
218
 
226
219
 
1213
1206
        return self._cache[version_id][5]
1214
1207
 
1215
1208
    def _version_list_to_index(self, versions):
1216
 
        encode_utf8 = cache_utf8.encode
1217
1209
        result_list = []
1218
1210
        for version in versions:
1219
1211
            if version in self._cache:
1221
1213
                result_list.append(str(self._cache[version][5]))
1222
1214
                # -- end lookup () --
1223
1215
            else:
1224
 
                result_list.append('.' + encode_utf8(version))
 
1216
                result_list.append('.' + version.encode('utf-8'))
1225
1217
        return ' '.join(result_list)
1226
1218
 
1227
1219
    def add_version(self, version_id, options, pos, size, parents):
1235
1227
                         (version_id, options, pos, size, parents).
1236
1228
        """
1237
1229
        lines = []
1238
 
        encode_utf8 = cache_utf8.encode
1239
1230
        for version_id, options, pos, size, parents in versions:
1240
 
            line = "\n%s %s %s %s %s :" % (encode_utf8(version_id),
 
1231
            line = "\n%s %s %s %s %s :" % (version_id.encode('utf-8'),
1241
1232
                                           ','.join(options),
1242
1233
                                           pos,
1243
1234
                                           size,
1333
1324
        """
1334
1325
        sio = StringIO()
1335
1326
        data_file = GzipFile(None, mode='wb', fileobj=sio)
1336
 
 
1337
 
        version_id_utf8 = cache_utf8.encode(version_id)
1338
1327
        data_file.writelines(chain(
1339
 
            ["version %s %d %s\n" % (version_id_utf8,
 
1328
            ["version %s %d %s\n" % (version_id.encode('utf-8'), 
1340
1329
                                     len(lines),
1341
1330
                                     digest)],
1342
1331
            lines,
1343
 
            ["end %s\n" % version_id_utf8]))
 
1332
            ["end %s\n" % version_id.encode('utf-8')]))
1344
1333
        data_file.close()
1345
1334
        length= sio.tell()
1346
1335
 
1375
1364
        rec = df.readline().split()
1376
1365
        if len(rec) != 4:
1377
1366
            raise KnitCorrupt(self._filename, 'unexpected number of elements in record header')
1378
 
        if cache_utf8.decode(rec[1]) != version_id:
 
1367
        if rec[1].decode('utf-8')!= version_id:
1379
1368
            raise KnitCorrupt(self._filename, 
1380
1369
                              'unexpected version, wanted %r, got %r' % (
1381
1370
                                version_id, rec[1]))
1390
1379
        record_contents = df.readlines()
1391
1380
        l = record_contents.pop()
1392
1381
        assert len(record_contents) == int(rec[2])
1393
 
        if l != 'end %s\n' % cache_utf8.encode(version_id):
 
1382
        if l.decode('utf-8') != 'end %s\n' % version_id:
1394
1383
            raise KnitCorrupt(self._filename, 'unexpected version end line %r, wanted %r' 
1395
1384
                        % (l, version_id))
1396
1385
        df.close()