Где Subversion физически хранит свою базу данных?

после прочтения многих введений, стартовых руководств и документации по SVN я все еще не могу понять, где хранятся мои данные управления версиями. Я имею в виду физически. У меня больше редактировать [1/2 ГБ] кода зарегистрирован, а РЕПО - всего несколько МБ. Для меня это все еще Вуду. И, как программист, я не очень верю в магию.

EDIT: Участник заявил, что не весь код был сохранен в РЕПО, это правда ? Я имею в виду, если я удалю локальная рабочая копия я все еще могу вернуть исходный код для репозитория... Если это так, я все еще не могу понять, как такое сжатие может произойти в моем коде...

EDIT 2: Когда я импортирую код в репозиторий, у меня есть сообщение "50MB uploaded", а фактическое РЕПО намного меньше. Алгоритмы сжатия должны быть задействованы.

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

7 ответов


поставив это в качестве ответа, по просьбе Мики:

Я удивлен, сколько людей имеют этот ответ неправильно. Этот.SVN-папка не является местом, где сервер хранит свои файлы (потому что это локально для машины - никто другой не сможет проверить эту информацию), и, хотя SVN хранит только различия (предполагая FSFS), он должен хранить оригиналы где-то.

конечно, как @csharptest.net сказал: "Я думаю, 70% - это данные perf, остальные 29.99% - в" obj " и 'каталоги bin'. оставляя вас с 10Mb фактического кода зарегистрирован.- Значит, вы все равно не проверяете всю эту информацию. Большая его часть никогда не попадает в хранилище. Кроме того, SVN использует множество алгоритмов сжатия и различных методов и не обязательно хранит ваши данные байт за байтом в репозитории. Возможно, именно поэтому вы видите разницу в размерах.

Если вам интересно узнать больше о том, как работает SVN, прочитайте об этом в этом Stackoverflow ответ.

надеюсь, что это поможет!


Это зависит от того, что вы используете для вашего сервера Subversion. Я использую Сервер VisualSVN, и он сохраняет файлы репозитория в c:\Repositories - ...


ваш репозиторий svn хранится в папке в файловой системе, он должен содержать подпапки, такие как:conf, dav, db, hooks, locks. Эти папки составляют репозиторий.

здесь svnadmin инструмент, который можно использовать для управления репозиторием.


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

это делается в версии командной строки, например:

svnadmin create d:/path_to_repository 

в приведенном выше примере репозиторий хранится в "d:/path_to_repository "

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


Почему бы вам не проверить новую рабочую копию, построить там и убедиться, что все еще работает? Мы все можем написать ответы здесь и угадать, сколько % может быть где, но в конце концов, вы все равно должны проверить, что все, что нужно добавить в Subversion.


Я понимаю, что это более старая тема, но после ее прочтения я подумал, что брошу свой $.02.

факторы, способствующие большому локальному набору файлов в рабочей копии:

  • Как уже упоминалось, рабочая копия meta / state-data живет в скрытом (по умолчанию) .svn справочники. Хотя метаданные довольно малы, для каждого файла в рабочей копии существует базовая линия рабочей копии. Это просто удвоит дисковое пространство, потребляемое для любого файла, который живет в хранилище.

  • если ваш репозиторий включает любые скопированные пути (типичные для ветвей или тегов), вы можете получить во много раз больше физического пространства. Это связано с тем, что реальное пространство, используемое в репозитории SVN для "логической" копии, является крошечным. Это действительно просто указатель на определенную ревизию исходного пути. Вы можете дублировать весь репозиторий с помощью операции копирования, которая приводит к новым данным репозитория всего в несколько сотен байтов (именно поэтому любая операция копирования занимает такое же короткое время). Тем не менее, когда вы проверяете или обновляете рабочую копию, она может быть в два раза больше, чем до ее копирования. Обычно именно поэтому можно использовать операцию переключения для изменения рабочей копии на ветвь или тег логически скопированного пути вместо рекурсивной проверки всего репозитория из его корня.

Я тоже был очень впечатлен тем, как компактно SVN хранит и передает его хранилища данных.


скрытые .папка svn в каждой версионной папке.