'Add a new thin pack to this object store.
Thin packs are packs that contain deltas with parents that exist
outside the pack. Because this object store doesn\'t support packs, we
extract and add the individual objects.
:param read_all: Read function that blocks until the number of
requested bytes are read.
:param read_some: Read function that returns at least one byte, but may
not return the number of bytes requested.'

def add_thin_pack(self, read_all, read_some):

    (f, commit, abort) = self.add_pack()
    try:
        indexer = PackIndexer(f, resolve_ext_ref=self.get_raw)
        copier = PackStreamCopier(read_all, read_some, f, delta_iter=indexer)
        copier.verify()
        self._complete_thin_pack(f, indexer)
    except:
        abort()
        raise
    else:
        commit()
