class GitBackend(Backend): def __init__(self, gitdir=None): self.gitdir = gitdir if not self.gitdir: self.gitdir = tempfile.mkdtemp() Repo.create(self.gitdir) self.repo = Repo(self.gitdir) self.fetch_objects = self.repo.fetch_objects self.get_refs = self.repo.get_refs def apply_pack(self, refs, read): fd, commit = self.repo.object_store.add_thin_pack() fd.write(read()) fd.close() commit() for oldsha, sha, ref in refs: if ref == "0" * 40: self.repo.remove_ref(ref) else: self.repo.set_ref(ref, sha) print "pack applied"