Я прочитал книгу о Subversion, и мне стало ясно, что Subversion хранит не отдельные файлы, а только дельты, чтобы минимизировать дисковое пространство. Subversion также делает то же самое с бинарными файлами (раньше это было огромной слабостью CVS).
Однако я не понимаю точного механизма. Когда я фиксирую файл, что происходит?
- Subversion хранит только diff (и уже имеет старую версию)
- Subversion удаляет предыдущую версию, сохраняет новый файл без изменений и создает обратный дифференциал для «воссоздания» старой версии при необходимости.
- Что-то еще, о чем я не подумал.
Первый случай может показаться наиболее логичным. Это однако поднимает другой вопрос. Если у меня в хранилище Subversion есть файл с 1000 коммитов, а новый разработчик проверяет чистую копию, то Subversion должен будет извлечь исходную версию (начальный импорт) и применить 1000 различий к этому, прежде чем вернуть результат. Это правильно? Существует ли какое-либо кэширование для файлов, в которых также хранится последняя версия?
В основном, где я могу найти информацию о внутреннем хранилище SVN?
Обновление: Очевидно, что бэкэнд Subversion играет большую роль в этом. В это время
или при написании FSFS используется опция 1, а в BDB - опция 2. Спасибо, msemack!