/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/bundle/serializer/v08.py

  • Committer: Richard Wilbur
  • Date: 2016-02-04 19:07:28 UTC
  • mto: This revision was merged to the branch mainline in revision 6618.
  • Revision ID: richard.wilbur@gmail.com-20160204190728-p0zvfii6zase0fw7
Update COPYING.txt from the original http://www.gnu.org/licenses/gpl-2.0.txt  (Only differences were in whitespace.)  Thanks to Petr Stodulka for pointing out the discrepancy.

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
 
20
20
from __future__ import absolute_import
21
21
 
22
 
from breezy import (
 
22
from bzrlib import (
23
23
    errors,
24
24
    ui,
25
25
    )
26
 
from breezy.bundle.serializer import (BundleSerializer,
 
26
from bzrlib.bundle.serializer import (BundleSerializer,
27
27
                                      _get_bundle_header,
28
28
                                     )
29
 
from breezy.bundle.serializer import binary_diff
30
 
from breezy.bundle.bundle_data import (RevisionInfo, BundleInfo)
31
 
from breezy.diff import internal_diff
32
 
from breezy.revision import NULL_REVISION
33
 
from breezy.testament import StrictTestament
34
 
from breezy.timestamp import (
 
29
from bzrlib.bundle.serializer import binary_diff
 
30
from bzrlib.bundle.bundle_data import (RevisionInfo, BundleInfo)
 
31
from bzrlib.diff import internal_diff
 
32
from bzrlib.revision import NULL_REVISION
 
33
from bzrlib.testament import StrictTestament
 
34
from bzrlib.timestamp import (
35
35
    format_highres_date,
36
36
    )
37
 
from breezy.textfile import text_file
38
 
from breezy.trace import mutter
 
37
from bzrlib.textfile import text_file
 
38
from bzrlib.trace import mutter
39
39
 
40
40
bool_text = {True: 'yes', False: 'no'}
41
41
 
115
115
        self.forced_bases = forced_bases
116
116
        self.to_file = f
117
117
        self.check_compatible()
118
 
        with source.lock_read():
 
118
        source.lock_read()
 
119
        try:
119
120
            self._write_main_header()
120
 
            with ui.ui_factory.nested_progress_bar() as pb:
 
121
            pb = ui.ui_factory.nested_progress_bar()
 
122
            try:
121
123
                self._write_revisions(pb)
 
124
            finally:
 
125
                pb.finished()
 
126
        finally:
 
127
            source.unlock()
122
128
 
123
129
    def write_bundle(self, repository, target, base, fileobj):
124
130
        return self._write_bundle(repository, target, base, fileobj)
254
260
        new_label = ''
255
261
 
256
262
        def do_diff(file_id, old_path, new_path, action, force_binary):
257
 
            def tree_lines(tree, path, require_text=False):
 
263
            def tree_lines(tree, require_text=False):
258
264
                if tree.has_id(file_id):
259
 
                    tree_file = tree.get_file(path, file_id)
 
265
                    tree_file = tree.get_file(file_id)
260
266
                    if require_text is True:
261
267
                        tree_file = text_file(tree_file)
262
268
                    return tree_file.readlines()
266
272
            try:
267
273
                if force_binary:
268
274
                    raise errors.BinaryFile()
269
 
                old_lines = tree_lines(old_tree, old_path, require_text=True)
270
 
                new_lines = tree_lines(new_tree, new_path, require_text=True)
 
275
                old_lines = tree_lines(old_tree, require_text=True)
 
276
                new_lines = tree_lines(new_tree, require_text=True)
271
277
                action.write(self.to_file)
272
278
                internal_diff(old_path, old_lines, new_path, new_lines,
273
279
                              self.to_file)
274
280
            except errors.BinaryFile:
275
 
                old_lines = tree_lines(old_tree, old_path, require_text=False)
276
 
                new_lines = tree_lines(new_tree, new_path, require_text=False)
 
281
                old_lines = tree_lines(old_tree, require_text=False)
 
282
                new_lines = tree_lines(new_tree, require_text=False)
277
283
                action.add_property('encoding', 'base64')
278
284
                action.write(self.to_file)
279
285
                binary_diff(old_path, old_lines, new_path, new_lines,
281
287
 
282
288
        def finish_action(action, file_id, kind, meta_modified, text_modified,
283
289
                          old_path, new_path):
284
 
            entry = new_tree.root_inventory.get_entry(file_id)
 
290
            entry = new_tree.root_inventory[file_id]
285
291
            if entry.revision != default_revision_id:
286
292
                action.add_utf8_property('last-changed', entry.revision)
287
293
            if meta_modified:
301
307
        for path, file_id, kind in delta.added:
302
308
            action = Action('added', [kind, path], [('file-id', file_id)])
303
309
            meta_modified = (kind=='file' and
304
 
                             new_tree.is_executable(path, file_id))
 
310
                             new_tree.is_executable(file_id))
305
311
            finish_action(action, file_id, kind, meta_modified, True,
306
312
                          DEVNULL, path)
307
313
 
318
324
                          path, path)
319
325
 
320
326
        for path, file_id, kind in delta.unchanged:
321
 
            new_rev = new_tree.get_file_revision(path, file_id)
 
327
            new_rev = new_tree.get_file_revision(file_id)
322
328
            if new_rev is None:
323
329
                continue
324
 
            old_rev = old_tree.get_file_revision(old_tree.id2path(file_id), file_id)
 
330
            old_rev = old_tree.get_file_revision(file_id)
325
331
            if new_rev != old_rev:
326
 
                action = Action('modified', [new_tree.kind(path, file_id),
327
 
                                             path])
 
332
                action = Action('modified', [new_tree.kind(file_id),
 
333
                                             new_tree.id2path(file_id)])
328
334
                action.add_utf8_property('last-changed', new_rev)
329
335
                action.write(self.to_file)
330
336
 
354
360
        return BundleInfo08()
355
361
 
356
362
    def _read(self):
357
 
        next(self._next())
 
363
        self._next().next()
358
364
        while self._next_line is not None:
359
365
            if not self._read_revision_header():
360
366
                break
531
537
                break
532
538
            if not self._next_line.startswith('#'):
533
539
                # Consume the trailing \n and stop processing
534
 
                next(self._next())
 
540
                self._next().next()
535
541
                break
536
542
 
537
543
class BundleInfo08(BundleInfo):