/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/plugins/git/cache.py

  • Committer: Martin
  • Date: 2018-06-30 22:18:39 UTC
  • mfrom: (7010 work)
  • mto: This revision was merged to the branch mainline in revision 7012.
  • Revision ID: gzlist@googlemail.com-20180630221839-98zi78xwcggestse
Merge trunk to fix conflict

Show diffs side-by-side

added added

removed removed

Lines of Context:
529
529
            (type_name, hexsha) = obj
530
530
            sha = hex_to_sha(hexsha)
531
531
        else:
532
 
            type_name = obj.type_name
 
532
            type_name = obj.type_name.decode('ascii')
533
533
            sha = obj.sha().digest()
534
534
        if type_name == "commit":
535
 
            self.db["commit\0" + self.revid] = "\0".join((sha, obj.tree))
 
535
            self.db[b"commit\0" + self.revid] = b"\0".join((sha, obj.tree))
536
536
            if type(bzr_key_data) is not dict:
537
537
                raise TypeError(bzr_key_data)
538
538
            type_data = (self.revid, obj.tree)
544
544
        elif type_name == "blob":
545
545
            if bzr_key_data is None:
546
546
                return
547
 
            self.db["\0".join(("blob", bzr_key_data[0], bzr_key_data[1]))] = sha
 
547
            self.db[b"\0".join((b"blob", bzr_key_data[0], bzr_key_data[1]))] = sha
548
548
            type_data = bzr_key_data
549
549
        elif type_name == "tree":
550
550
            if bzr_key_data is None:
552
552
            type_data = bzr_key_data
553
553
        else:
554
554
            raise AssertionError
555
 
        entry = "\0".join((type_name, ) + type_data) + "\n"
556
 
        key = "git\0" + sha
 
555
        entry = b"\0".join((type_name.encode('ascii'), ) + type_data) + b"\n"
 
556
        key = b"git\0" + sha
557
557
        try:
558
558
            oldval = self.db[key]
559
559
        except KeyError:
560
560
            self.db[key] = entry
561
561
        else:
562
 
            if oldval[-1] != "\n":
563
 
                self.db[key] = "".join([oldval, "\n", entry])
 
562
            if not oldval.endswith(b'\n'):
 
563
                self.db[key] = b"".join([oldval, b"\n", entry])
564
564
            else:
565
 
                self.db[key] = "".join([oldval, entry])
 
565
                self.db[key] = b"".join([oldval, entry])
566
566
 
567
567
    def finish(self):
568
568
        if self._commit is None:
619
619
                                          os.O_RDWR|os.O_CREAT)
620
620
            self.db = mapdbs()[path]
621
621
        try:
622
 
            if int(self.db["version"]) not in (2, 3):
 
622
            if int(self.db[b"version"]) not in (2, 3):
623
623
                trace.warning("SHA Map is incompatible (%s -> %d), rebuilding database.",
624
 
                              self.db["version"], self.TDB_MAP_VERSION)
 
624
                              self.db[b"version"], self.TDB_MAP_VERSION)
625
625
                self.db.clear()
626
626
        except KeyError:
627
627
            pass
628
 
        self.db["version"] = str(self.TDB_MAP_VERSION)
 
628
        self.db[b"version"] = b'%d' % self.TDB_MAP_VERSION
629
629
 
630
630
    def start_write_group(self):
631
631
        """Start writing changes."""
644
644
 
645
645
    def lookup_commit(self, revid):
646
646
        try:
647
 
            return sha_to_hex(self.db["commit\0" + revid][:20])
 
647
            return sha_to_hex(self.db[b"commit\0" + revid][:20])
648
648
        except KeyError:
649
649
            raise KeyError("No cache entry for %r" % revid)
650
650
 
651
651
    def lookup_blob_id(self, fileid, revision):
652
 
        return sha_to_hex(self.db["\0".join(("blob", fileid, revision))])
 
652
        return sha_to_hex(self.db[b"\0".join(("blob", fileid, revision))])
653
653
 
654
654
    def lookup_git_sha(self, sha):
655
655
        """Lookup a Git sha in the database.
662
662
        """
663
663
        if len(sha) == 40:
664
664
            sha = hex_to_sha(sha)
665
 
        value = self.db["git\0" + sha]
 
665
        value = self.db[b"git\0" + sha]
666
666
        for data in value.splitlines():
667
 
            data = data.split("\0")
668
 
            if data[0] == "commit":
 
667
            data = data.split(b"\0")
 
668
            type_name = data[0].decode('ascii')
 
669
            if type_name == "commit":
669
670
                if len(data) == 3:
670
 
                    yield (data[0], (data[1], data[2], {}))
 
671
                    yield (type_name, (data[1], data[2], {}))
671
672
                else:
672
 
                    yield (data[0], (data[1], data[2], {"testament3-sha1": data[3]}))
673
 
            elif data[0] in ("tree", "blob"):
674
 
                yield (data[0], tuple(data[1:]))
 
673
                    yield (type_name, (data[1], data[2], {"testament3-sha1": data[3]}))
 
674
            elif type_name in ("tree", "blob"):
 
675
                yield (type_name, tuple(data[1:]))
675
676
            else:
676
 
                raise AssertionError("unknown type %r" % data[0])
 
677
                raise AssertionError("unknown type %r" % type_name)
677
678
 
678
679
    def missing_revisions(self, revids):
679
680
        ret = set()
680
681
        for revid in revids:
681
 
            if self.db.get("commit\0" + revid) is None:
 
682
            if self.db.get(b"commit\0" + revid) is None:
682
683
                ret.add(revid)
683
684
        return ret
684
685
 
685
686
    def revids(self):
686
687
        """List the revision ids known."""
687
688
        for key in self.db.iterkeys():
688
 
            if key.startswith("commit\0"):
 
689
            if key.startswith(b"commit\0"):
689
690
                yield key[7:]
690
691
 
691
692
    def sha1s(self):
692
693
        """List the SHA1s."""
693
694
        for key in self.db.iterkeys():
694
 
            if key.startswith("git\0"):
 
695
            if key.startswith(b"git\0"):
695
696
                yield sha_to_hex(key[4:])
696
697
 
697
698