/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 breezy/multiparent.py

  • Committer: Jelmer Vernooij
  • Date: 2018-06-12 23:20:41 UTC
  • mfrom: (6977.2.4 transform-fixes)
  • Revision ID: jelmer@jelmer.uk-20180612232041-gadxsx7ezrx6werf
Merge lp:~jelmer/brz/transform-fixes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
557
557
 
558
558
    def get_diff(self, version_id):
559
559
        start, count = self._diff_offset[version_id]
560
 
        infile = open(self._filename + '.mpknit', 'rb')
561
 
        try:
 
560
        with open(self._filename + '.mpknit', 'rb') as infile:
562
561
            infile.seek(start)
563
562
            sio = BytesIO(infile.read(count))
564
 
        finally:
565
 
            infile.close()
566
 
        zip_file = gzip.GzipFile(None, mode='rb', fileobj=sio)
567
 
        try:
 
563
        with gzip.GzipFile(None, mode='rb', fileobj=sio) as zip_file:
568
564
            file_version_id = zip_file.readline()
569
565
            content = zip_file.read()
570
566
            return MultiParent.from_patch(content)
571
 
        finally:
572
 
            zip_file.close()
573
567
 
574
568
    def add_diff(self, diff, version_id, parent_ids):
575
 
        outfile = open(self._filename + '.mpknit', 'ab')
576
 
        try:
 
569
        with open(self._filename + '.mpknit', 'ab') as outfile:
577
570
            outfile.seek(0, 2)      # workaround for windows bug:
578
571
                                    # .tell() for files opened in 'ab' mode
579
572
                                    # before any write returns 0
580
573
            start = outfile.tell()
581
 
            try:
582
 
                zipfile = gzip.GzipFile(None, mode='ab', fileobj=outfile)
 
574
            with gzip.GzipFile(None, mode='ab', fileobj=outfile) as zipfile:
583
575
                zipfile.writelines(itertools.chain(
584
576
                    ['version %s\n' % version_id], diff.to_patch()))
585
 
            finally:
586
 
                zipfile.close()
587
577
            end = outfile.tell()
588
 
        finally:
589
 
            outfile.close()
590
578
        self._diff_offset[version_id] = (start, end-start)
591
579
        self._parents[version_id] = parent_ids
592
580
 
676
664
 
677
665
def gzip_string(lines):
678
666
    sio = BytesIO()
679
 
    data_file = gzip.GzipFile(None, mode='wb', fileobj=sio)
680
 
    data_file.writelines(lines)
681
 
    data_file.close()
 
667
    with gzip.GzipFile(None, mode='wb', fileobj=sio) as data_file:
 
668
        data_file.writelines(lines)
682
669
    return sio.getvalue()