Используя Subversion, где хранится «фактический» исходный код? - PullRequest
12 голосов
/ 19 ноября 2009

Я только привыкаю к ​​Subversion, и у меня есть фундаментальный вопрос по поводу версий.

Я создал свой SVN-репозиторий на сервере "S", размещенном в моей сети. Предполагая, что я «импортирую» код, файлы, каталоги и т. Д. С другого компьютера «A» в сети, он добавляется в репозиторий SVN моего сервера.

Я делаю проверку с другого компьютера "B" в сети и могу получить весь код из хранилища и т. Д.

Если я отформатирую или уничтожу ПК "A", мой исходный код все еще будет доступен через кассу в B?

Если да, когда я в действительности захожу в свою папку репозитория на сервере, я не нахожу копию папки, только каталоги конфигурации, базы данных и т. Д. Где физически хранятся данные на сервере S, если они вообще есть? В настоящее время размер каталога репозитория явно намного меньше размера папок с исходным кодом.

Я думаю, что VSS хранит копию действующего кода в каком-то нераспознаваемом формате БД, у git есть опция, не требующая этого. SVN также поддерживает копию кода где-нибудь?

Ответы [ 6 ]

9 голосов
/ 19 ноября 2009

Когда вы фиксируете изменения в своем хранилище, они будут храниться на сервере S внутри вашего хранилища Subversion. Репозиторий фактически состоит из серии дельт, хранящихся в папке db/revs - переход от одной версии репозитория к другой. Таким образом, хранилище на сервере не будет напоминать структуру вашего исходного кода. Репозитории SVN имеют полную версию - любое изменение в репозитории увеличивает версию репозитория.

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

2 голосов
/ 19 ноября 2009

Хранилище физически хранится в некоторой базе данных на сервере SVN . После импорта в репозиторий никакие данные не исчезнут , за исключением дефектов на сервере. Изменения в рабочих копиях не имеют значения, если они не зафиксированы - и даже тогда все, что когда-либо совершалось, можно найти в истории. Если вы регулярно делаете резервные копии своего хранилища, то ничто не исчезнет полностью.

2 голосов
/ 19 ноября 2009

для svn исходный код сохраняется как исходный код в любом рабочем каталоге, а исходный код + история хранятся в хранилище в сжатом виде. так что если вы потеряете свой репозиторий, вы потеряете любой код, который вы в данный момент не извлекли. если вы потеряете контрольную копию, то будут потеряны только локальные изменения, а из репозитория можно получить все остальное.

для DVCS история также сохраняется в любой кассе. поэтому, если ваш «основной» репозиторий выйдет из строя (при условии, что он у вас есть), вы сможете получить всю историю от проверенных версий людей.

и VSS просто сломан.

1 голос
/ 19 ноября 2009

Как только вы импортируете свои исходные файлы, они будут храниться в хранилище SVN на сервере. Так что, если ПК «А» будет уничтожен, вы все равно сможете извлечь источники из SVN. Папка 'db' хранилища - это место, где находятся настоящие файлы. Вы можете узнать больше о структуре хранилища SVN здесь .

1 голос
/ 19 ноября 2009

Subversion хранит файлы в каком-то проприетарном формате (не уверен, что в моей голове), а не в структуре каталогов. Что касается его размера, убедитесь, что вы на самом деле фиксируете файлы. Если вы просто добавляете их, файлы не помещаются в хранилище. Кроме того, Subversion сжимает то, что входит в хранилище.

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

Короче говоря, регулярно создавайте резервные копии хранилища серверов.

0 голосов
/ 19 ноября 2009

В дополнение к другим ответам:

  • Рабочая копия на ПК B не обновляется автоматически.

  • Каталог хранилища не должен быть меньше полной проверки. Убедитесь, просматривая само хранилище, что все файлы из вашей рабочей копии действительно содержатся в хранилище.

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