Subversion FSFS - как хранятся ревизии в хранилище? - PullRequest
4 голосов
/ 13 сентября 2010

Я хотел бы понять, как Subversion хранит ревизии в FSFS и как создается представление / шейпшот для данного номера ревизии.

Что я понял из Googling, так это то, что FSFS представляет собой простую структуру каталогов с подкаталогами для каждой ревизии, например:

..svn/rev/0/
..svn/rev/1/
..svn/rev/2/

Предположительно, только изменения (дельты) записываются в каждом каталоге редакций. Значит ли это, что при построении представления / снимка для ревизии N все дельты от 0 до N должны быть зациклены?

Любые ссылки на ресурсы очень ценятся.

Спасибо

Ответы [ 2 ]

5 голосов
/ 13 сентября 2010

Subversion хранит все дельты каждой ревизии в одном (плоском) файле ревизии. Каждый файл / папка внутри хранилища (называемый «узлом») имеет внутренний идентификатор.

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

Важно, что FSFS использует прямые дельты вместо обратных дельт с использованием BDB-бэкэнда. Таким образом, FSFS быстрее при коммитах, но медленнее при проверке, характеристики производительности Berkeley DB совсем другие.

Вы можете прочитать намного больше внутри Замечание по дизайну SVN о FSFS .

3 голосов
/ 16 января 2012

Вот ссылка на структурную ссылку FSFS (включая описание формата файла): https://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure

...