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