2012-07-03 5 views
1

Я читал много раз, что git commits содержит моментальный снимок всего репозитория, а не diff. Однако я не понимаю, как формат хранения (snapshot vs diff) влияет на другие операции.снимки хранилища git vs diffs

Для меня разница и моментальный снимок как опция хранения равны. Это означает, что я получаю одинаковые функциональные возможности. Просто, например: с возможностью хранения снимков, чтобы получить diff, нужно сравнить два моментальных снимка и получить этот diff, с опцией хранения данных для хранения данных достаточно просто взять этот diff. И imho такая схема работает со всеми операциями (еще один пример: проверка какой-либо ветви с моментальными снимками просто нужно извлечь все файлы из моментальных снимков, с diffs необходимо применить все diff и результат будет таким же, как и с моментальным снимком).

Итак, в чем основное отличие между моментальными снимками и различиями?

ответ

4

Тот факт, что git commit ссылается на моментальный снимок (или полное дерево), является фактом модели концептуальных данных, а не базовым выбором хранилища.

На самом деле, как правило, неверно, что фиксация сохраняется как моментальный снимок. После того, как они упакованы, «файлы», которые составляют коммит, будут дельта сжаты в отношении похожих файлов способом, подобным выбору хранилища diff, хотя в git они могут быть дельта сжаты от чего-то, что не обязательно является предыдущей версией того же файл.

Моя рекомендация состоит в том, чтобы сначала изучить концепции git и его модели данных и не беспокоиться о механизмах хранения вначале.

+0

Что вы подразумеваете под моделью данных? Если это чисто теоретический и не представляет собой базовую структуру данных, вы не могли бы думать о том, что SVN также имеет модель данных на основе моментальных снимков? Вы говорите, что это всего лишь способ подумать об этом в объяснительных целях? – MattClimbs

Смежные вопросы