Я читал о нескольких обсуждениях здесь и о том, что репозитории DVCS используют примерно то же или меньше места, чем их централизованные компоненты. Возможно, я пропустил это, но я не нашел хорошего объяснения, почему это так. Кто-нибудь знает?
Я читал о нескольких обсуждениях здесь и о том, что репозитории DVCS используют примерно то же или меньше места, чем их централизованные компоненты. Возможно, я пропустил это, но я не нашел хорошего объяснения, почему это так. Кто-нибудь знает?
Ответы:
Исходя из моего собственного опыта, все утверждения верны:
Если вы сравните местоположение извлечения (которое само по себе является хранилищем с Git), история будет совершенно другой:
Если вы сравните количество байтов, которое вам нужно загрузить или загрузить, оно снова будет другим.
Итак, в конце вы сравниваете яблоки с апельсинами, и в зависимости от того, что вы хотите сделать с Subversion или Git, результат может быть другим.
@jk спросил о полных копиях или бинарных разностях, и я не смог ответить на этот вопрос. Я спросил Мэтью МакКаллоу, который недавно проводил семинар по Git на Jax 2012 (который я посетил). Он потратил время (большое ему спасибо), чтобы подробно объяснить суть внутренней работы Git. Так что да, там работает сжатие (и я также проведу эксперимент с офисным файлом Microsoft и сравню это с его сущностью), но нет, сжатие выполнено для всего файла. Ссылаясь на его суть:
Свободные объекты записываются в сжатом, но не дельта-формате во время каждой фиксации.
git gc
или накапливая слишком много незакрепленных объектов, он находит подходящих кандидатов для их дельта-сжатия (git может отличаться от предыдущей версии), сохраняет дельты в «пакете» и удаляет незакрепленные объекты.