Как насчет системы хранения git - PullRequest
2 голосов
/ 10 октября 2011

Может быть, это глупый вопрос, но я хотел бы поднять этот вопрос, поскольку для меня неясно: содержимое файла git commit как снимок относительно svn commit как системы хранения delta, означает ли это, что git требуется больше дискового пространства, чем svn? лично думает, что это должно быть дельта в разумных пределах.

Ответы [ 2 ]

2 голосов
/ 10 октября 2011

На самом деле, учитывая тот факт, что git использует преобразование zlib для каждого объекта, оказывается, что git более эффективен, чем svn: например, загрузка Git-репозитория Ruby on Rails, включающая полную историю проекта, в настоящее времяоколо 13 миллионов, что намного меньше, чем размер одной проверки проекта, около 9 миллионов.Репозиторий сервера SVN (т. Е. Вся история) для Ruby on Rails составляет около 115 млн.

1 голос
/ 10 октября 2011

Логически git сохраняет каждый файл (фактически, каждый объект) в хранилище отдельно и идентифицирует их по SHA1.Вы можете посмотреть на это сами, объекты находятся в каталогах в .git/objects, которые идентифицируются первыми двумя символами SHA1.

Но git также поддерживает хранение (и передачу) объектов в так называемом packfile.Этот файл содержит объекты, сжатые с использованием zlib.Но он также может содержать дельта-сжатые объекты, ссылающиеся на другой объект в том же файле пакета (это не обязательно должна быть предыдущая версия того же файла).

Объекты, сохраненные как обычные файлы, сжимаются в файл пакетакогда вы звоните git gc.Это также происходит автоматически во время некоторых операций git, которые могут создавать эти «незакрепленные объекты».

Из-за всего этого рабочий каталог git часто меньше рабочего каталога SVN.Что здорово, учитывая, что git working dir содержит всю историю репо.(Рабочий каталог SVN обычно примерно в два раза больше, чем файлы в нем. Это потому, что он содержит еще одну копию каждого файла для передачи и фиксации.)

...