LINUX.ORG.RU

Нетекстовые файлы в SVN

 , ,


0

1

Правильно ли я понимаю, что системы управления версиями хранят не каждую версию текстового файла, а первую версию и различия между ними? А как с бинарными файлами, из которых легко достать текст? Например, TXT.GZ? TXT.ZIP? ODT и DOCX? Никакой оптимизации нет?

★★★★★

darcs, pijul так работают. git - нет.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от RazrFalcon

Можно подробнее? Хотя бы ссылку на доки.

И есть ли связь, что программы с такой фичей остались невостребованными?

question4 ★★★★★ ()
Ответ на: комментарий от EXL

Тогда понятно, почему говорят про его прожорливость по сравнению с CVS.

question4 ★★★★★ ()

svn писали, что diff по типу rsync хранят.

atrus ★★★★★ ()
Ответ на: комментарий от EXL

Git емнип использует смешанный подход для текстовых файлов. если по diff разница выше некого n%, то сохраняет файл, иначе сохраняет патч

upcFrost ★★★★★ ()
Ответ на: комментарий от question4

Да я сам о них только краем уха слышал.

darcs не взлетел, вроде как, ибо очень медленный. pijul, написанный на rust, пытается решить эту проблему.

В целом выдрать нужный слепок из .git в разы быстрее, чем накладывать n патчей.

RazrFalcon ★★★★★ ()
Ответ на: комментарий от question4

Тогда понятно, почему говорят про его прожорливость по сравнению с CVS.

Кто говорит? Бред это. git хранит снапшоты, но в pack'ах с дельта компрессией, в итоге чекаут большого репозитория (исходники FreeBSD, например) в git занимает места меньше чем в svn, при том что в git доступна ВСЯ история, а в svn только текущая ревизия.

slovazap ★★★★★ ()
Ответ на: комментарий от upcFrost

Git емнип использует смешанный подход для текстовых файлов. если по diff разница выше некого n%, то сохраняет файл, иначе сохраняет патч

Чушь, всегда хранятся снапшоты. «Свыше некоего n%» это касается трекинга истории файлов при перемещении. Т.е. если aaa/bbb в ревизии N и ccc/ddd в ревизии N+1 одинаковы или близки, значит файл был перемещён или скопирован и к истории ccc/ddd можно добавить историю aaa/bbb.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Чушь, всегда хранятся снапшоты

судя по ссылке ниже (и ссылкам в ответах) гит все-таки умеет и патчи тоже. правда делает он это для компрессии и далеко не для всех файлов

http://stackoverflow.com/questions/5176225/are-gits-pack-files-deltas-rather-...

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

Дельта компрессия это не патчи. Это дельта компрессия.

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

Тогда понятно, почему говорят про его прожорливость по сравнению с CVS.

Кто говорит?

Навскидку — автор RPM :)

Бред это. git хранит снапшоты, но в pack'ах с дельта компрессией, в итоге чекаут большого репозитория (исходники FreeBSD, например) в git занимает места меньше чем в svn,

Сколько места занимают «невидимые» директории .svn и .git? Неужели .git меньше?

Что git при этом работает быстрее за счёт сжатия, слышал неоднократно.

question4 ★★★★★ ()
Ответ на: комментарий от atrus

svn писали, что diff по типу rsync хранят.

Сделал файлы ODT ~ 926 тысяч знаков текста без сложного форматирования. Объём ODT — 135 килобайт. Объёмы дельт для удаления первой и последней строк — 30 и 125 килобайт соответственно. Xdelta 3.0.11.

question4 ★★★★★ ()
Ответ на: комментарий от question4

Сколько места занимают «невидимые» директории .svn и .git? Неужели .git меньше?

Естественно.

SVN, freebsd HEAD: всего 3.9G, .svn 2.7G

GIT, freebsd вся история, все ветки: всего 2.2G, .git 1.1G

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

только надо не забыть, что гитовское барахло имеет тенденцию разрастаться со временем (у меня .git дорастал до 16 Gb), особенно на больших проектах. Для чего даже придумали «дефрагментатор» gc, reflog, repack и прочие костыли.

former_anonymous ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.