Как VCS, такой как SVN, хранит файлы? - PullRequest
3 голосов
/ 26 августа 2011

Когда я изучаю Git, я узнаю, что другие системы VCS, такие как SVN, обычно хранят изменения в базовой версии файлов. Таким образом, в качестве логического вывода, если я хочу проверить версию 4 файла A, SVN на лету исправит файл базовой версии со всеми зафиксированными наборами изменений до версии 4, прежде чем доставить нужную мне версию?

Следующая картинка может быть полезна. Traditional VCS like SVN

Короче говоря, только базовая версия файла сохраняется статически , все остальные версии динамически генерируются с базовым файлом и необходимыми наборами изменений.

право

Спасибо.

Ответы [ 3 ]

3 голосов
/ 26 августа 2011

Из документа Subversion Design:

Как и многие другие системы контроля версий, Subversion сохраняет изменения как различия. Это не делает полные копии узлов; вместо этого сохраняет последнюю ревизию как полный текст, а предыдущие ревизии как последовательность обратных различий (здесь используется слово «diff» - для файлов это означает vdeltas, для каталогов это означает, что формат выражает изменения в каталогах).

Важным моментом является то, что последняя ревизия является базовой, и (обратные) различия сохраняются от этого в обратном направлении.

http://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct

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

2 голосов
/ 26 августа 2011

Существует множество документов о том, как Subversion хранит свои файлы, но правда в том, что вы действительно не должны знать.В противном случае у вас может возникнуть желание внести эти изменения за спиной менеджера хранилища.

Структура внутреннего хранилища хранилища является острой проблемой.Некоторые группы говорят, что это должно быть хорошо задокументировано и хорошо понято в случае возникновения проблем, и пользователь может их исправить.Другие говорят, что структуру никогда не следует трогать, и что самые большие проблемы обычно возникают у конечных пользователей, которые думают, что они знают, что делают, портят репозиторий и уничтожают все.форматы.Один использует формат файла FSFS (то, что большинство людей используют сейчас), но изначально Subversion использовал Berkeley DB (BDB) для хранения файлов.(Это все еще может, но теперь вы должны указать это).В будущем Subversion, вероятно, переключится на SQLite или MySQL в качестве бэкэнда хранилища.

Это позволит разработчикам Subversion отделить исполняемый код от структуры хранилища.Это сделает добавление новых функций намного проще.Например, было много шума и крика для уничтоженной команды.К сожалению, из того, что разработчики Subversion сказали мне, это просто невозможно сделать в текущей файловой структуре FSFS.Репозиторий на основе SQL сделал бы это намного проще.

0 голосов
/ 26 августа 2011

Во-первых, вы не можете оформить заказ на один файл в Subversion. Наименьшая часть, которую вы можете оформить, это каталог, но это ничего не изменит.

Лучшую документацию о том, как работает SVN и как все хранится, можно прочитать здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...