Почему Git использует SHA1 * сжатых * объектов, а не SHA1 исходных объектов?

Мне просто любопытно, почему был сделан этот выбор - он в основном исключает изменение алгоритма сжатия, используемого Git, - потому что он не использует SHA1 необработанных BLOB-объектов. Возможно, здесь есть некоторые соображения по поводу эффективности. Может быть, ZLIB быстрее сжимает файл, чем алгоритм SHA1 создает хэш, поэтому сжатие перед хешированием происходит быстрее?

Вот ссылка на исходный Git README от Линуса: http://git.kernel.org/?p=git/git.git;a=blob;f=README;h=27577f76849c09d3405397244eb3d8ae1d11b0f3;hb= e83c5163316f89bfbde7d9ab23ca2e25604af290

А вот соответствующий абзац:

«В базе данных адресуемой по содержанию коллекции есть несколько видов объектов. Все они дефлируются с помощью zlib и начинаются с тега их информация о типе и размере данных. Хэш SHA1 всегда является хешем сжатого объекта, а не исходного. "

11
задан jds 26 November 2011 в 03:56
поделиться