~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repofmt/pack_repo.py

Abbreviate pack_stat struct format to '>6L'

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from bzrlib import (
26
26
    chk_map,
27
27
    cleanup,
 
28
    config,
28
29
    debug,
29
30
    graph,
30
31
    osutils,
314
315
        for index_type in index_types:
315
316
            old_name = self.index_name(index_type, self.name)
316
317
            new_name = '../indices/' + old_name
317
 
            self.upload_transport.rename(old_name, new_name)
 
318
            self.upload_transport.move(old_name, new_name)
318
319
            self._replace_index_with_readonly(index_type)
319
320
        new_name = '../packs/' + self.file_name()
320
 
        self.upload_transport.rename(self.file_name(), new_name)
 
321
        self.upload_transport.move(self.file_name(), new_name)
321
322
        self._state = 'finished'
322
323
 
323
324
    def _get_external_refs(self, index):
478
479
        # visible is smaller.  On the other hand none will be seen until
479
480
        # they're in the names list.
480
481
        self.index_sizes = [None, None, None, None]
481
 
        self._write_index('revision', self.revision_index, 'revision', suspend)
 
482
        self._write_index('revision', self.revision_index, 'revision',
 
483
            suspend)
482
484
        self._write_index('inventory', self.inventory_index, 'inventory',
483
485
            suspend)
484
486
        self._write_index('text', self.text_index, 'file texts', suspend)
488
490
            self.index_sizes.append(None)
489
491
            self._write_index('chk', self.chk_index,
490
492
                'content hash bytes', suspend)
491
 
        self.write_stream.close()
 
493
        self.write_stream.close(
 
494
            want_fdatasync=self._pack_collection.config_stack.get('repository.fdatasync'))
492
495
        # Note that this will clobber an existing pack with the same name,
493
496
        # without checking for hash collisions. While this is undesirable this
494
497
        # is something that can be rectified in a subsequent release. One way
503
506
        new_name = self.name + '.pack'
504
507
        if not suspend:
505
508
            new_name = '../packs/' + new_name
506
 
        self.upload_transport.rename(self.random_name, new_name)
 
509
        self.upload_transport.move(self.random_name, new_name)
507
510
        self._state = 'finished'
508
511
        if 'pack' in debug.debug_flags:
509
512
            # XXX: size might be interesting?
537
540
            transport = self.upload_transport
538
541
        else:
539
542
            transport = self.index_transport
540
 
        self.index_sizes[self.index_offset(index_type)] = transport.put_file(
541
 
            index_name, index.finish(), mode=self._file_mode)
 
543
        index_tempfile = index.finish()
 
544
        index_bytes = index_tempfile.read()
 
545
        write_stream = transport.open_write_stream(index_name,
 
546
            mode=self._file_mode)
 
547
        write_stream.write(index_bytes)
 
548
        write_stream.close(
 
549
            want_fdatasync=self._pack_collection.config_stack.get('repository.fdatasync'))
 
550
        self.index_sizes[self.index_offset(index_type)] = len(index_bytes)
542
551
        if 'pack' in debug.debug_flags:
543
552
            # XXX: size might be interesting?
544
553
            mutter('%s: create_pack: wrote %s index: %s%s t+%6.3fs',
822
831
                set(all_combined).difference([combined_idx]))
823
832
        # resumed packs
824
833
        self._resumed_packs = []
 
834
        self.config_stack = config.LocationStack(self.transport.base)
825
835
 
826
836
    def __repr__(self):
827
837
        return '%s(%r)' % (self.__class__.__name__, self.repo)
1211
1221
        """
1212
1222
        for pack in packs:
1213
1223
            try:
1214
 
                pack.pack_transport.rename(pack.file_name(),
 
1224
                pack.pack_transport.move(pack.file_name(),
1215
1225
                    '../obsolete_packs/' + pack.file_name())
1216
1226
            except (errors.PathError, errors.TransportError), e:
1217
1227
                # TODO: Should these be warnings or mutters?
1225
1235
                suffixes.append('.cix')
1226
1236
            for suffix in suffixes:
1227
1237
                try:
1228
 
                    self._index_transport.rename(pack.name + suffix,
 
1238
                    self._index_transport.move(pack.name + suffix,
1229
1239
                        '../obsolete_packs/' + pack.name + suffix)
1230
1240
                except (errors.PathError, errors.TransportError), e:
1231
1241
                    mutter("couldn't rename obsolete index, skipping it:\n%s"