Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions book/10-git-internals/sections/packfiles.asc
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ $ find .git/objects -type f
.git/objects/fd/f4fc3344e67ab068f836878b6c4951e3b15f3d # commit 1
----

Git использует zlib для сжатия содержимого этих файлов; к тому же у нас не так много данных, поэтому все эти файлы вместе занимают всего 925 байт.
Git использует `zlib` для сжатия содержимого этих файлов; к тому же у нас не так много данных, поэтому все эти файлы вместе занимают всего 925 байт.
Для того, чтобы продемонстрировать одну интересную особенность Git, добавим файл побольше.
Добавим файл `repo.rb` из библиотеки Grit -- он занимает примерно 22 Кб:

Expand Down Expand Up @@ -123,7 +123,7 @@ Pack-файл -- это файл, в котором теперь находит

Как Git это делает?
При упаковке Git ищет похожие по имени и размеру файлы и сохраняет только разницу между соседними версиями.
Можно заглянуть в pack-файл чтобы понять, какие действия выполняются при сжатии.
Можно заглянуть в pack-файл, чтобы понять, какие действия выполняются при сжатии.
Для просмотра содержимого упакованного файла существует служебная команда `git verify-pack`:

[source,console]
Expand Down Expand Up @@ -160,4 +160,4 @@ chain length = 1: 3 objects
Что интересно, вторая версия файла сохраняется «как есть», а первая -- в виде дельты: ведь скорее всего вам понадобится быстрый доступ к самым последним версиям файла.

Также здорово, что переупаковку можно выполнять в любое время.
Время от времени Git будет выполнять её автоматически, чтобы сэкономить место на диске, но всегда можно инициировать упаковку вручную используя `git gc`.
Время от времени Git будет выполнять её автоматически, чтобы сэкономить место на диске, но всегда можно инициировать упаковку вручную, используя `git gc`.
Loading