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

More work on roundtrip push support.

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
    MemoryPackIndex,
34
34
    PackData,
35
35
    Pack,
 
36
    ThinPackData,
36
37
    iter_sha1,
37
38
    load_pack_index_file,
38
39
    write_pack_data,
41
42
from dulwich.repo import (
42
43
    BaseRepo,
43
44
    RefsContainer,
44
 
    BASE_DIRECTORIES,
45
45
    INDEX_FILENAME,
46
46
    OBJECTDIR,
47
47
    REFSDIR,
312
312
        except NoSuchFile:
313
313
            return None
314
314
 
315
 
    def _put_named_file(self, relpath, contents):
316
 
        self._controltransport.put_bytes(relpath, contents)
317
 
 
318
315
    def index_path(self):
319
316
        """Return the path to the index file."""
320
317
        return self._controltransport.local_abspath(INDEX_FILENAME)
335
332
    def __repr__(self):
336
333
        return "<%s for %r>" % (self.__class__.__name__, self.transport)
337
334
 
338
 
    @classmethod
339
 
    def init(cls, transport, bare=False):
340
 
        if not bare:
341
 
            transport.mkdir(".git")
342
 
            control_transport = transport.clone(".git")
343
 
        else:
344
 
            control_transport = transport
345
 
        for d in BASE_DIRECTORIES:
346
 
            control_transport.mkdir("/".join(d))
347
 
        control_transport.mkdir(OBJECTDIR)
348
 
        TransportObjectStore.init(control_transport.clone(OBJECTDIR))
349
 
        ret = cls(transport)
350
 
        ret.refs.set_symbolic_ref("HEAD", "refs/heads/master")
351
 
        ret._init_files(bare)
352
 
        return ret
353
 
 
354
335
 
355
336
class TransportObjectStore(PackBasedObjectStore):
356
337
    """Git-style object store that exists on disk."""
492
473
        :param path: Path to the pack file.
493
474
        """
494
475
        f.seek(0)
495
 
        data = PackData.from_file(self.get_raw, f, len(f.getvalue()))
 
476
        data = ThinPackData.from_file(self.get_raw, f, len(f.getvalue()))
496
477
        idx = MemoryPackIndex(data.sorted_entries(), data.get_stored_checksum())
497
478
        p = Pack.from_objects(data, idx)
498
479
 
499
480
        pack_sha = idx.objects_sha1()
500
481
 
501
 
        datafile = self.pack_transport.open_write_stream(
502
 
                "pack-%s.pack" % pack_sha)
 
482
        datafile = self.pack_transport.open_write_stream("pack-%s.pack" % pack_sha)
503
483
        try:
504
 
            entries, data_sum = write_pack_data(datafile, p.pack_tuples())
 
484
            entries, data_sum = write_pack_data(datafile, ((o, None) for o in p.iterobjects()), len(p))
505
485
        finally:
506
486
            datafile.close()
507
487
        entries.sort()
508
 
        idxfile = self.pack_transport.open_write_stream(
509
 
            "pack-%s.idx" % pack_sha)
 
488
        idxfile = self.pack_transport.open_write_stream("pack-%s.idx" % pack_sha)
510
489
        try:
511
490
            write_pack_index_v2(idxfile, data.sorted_entries(), data_sum)
512
491
        finally: