Используя Subversion, где хранится" фактический " исходный код?

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

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

Я делаю заказ с другого компьютера "B" в сети и я могу получить весь код из репозитория, и так далее.

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

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

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

6 ответов


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

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


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


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

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

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


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

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

короче говоря, убедитесь, что периодические резервные копии репозитория серверов.


Как только вы импортируете исходные файлы, они будут храниться в репозитории SVN на сервере. Поэтому, если ПК "A" будет уничтожен, вы все равно сможете получить источники из SVN. В папке " db " репозитория находятся фактические файлы. Вы можете узнать больше о структуре репозитория SVN здесь.


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

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

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