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

После прочтения многих представлений, руководств по началу работы и документации по SVN, я все еще не могу понять, где хранятся мои данные управления версиями. Я имею в виду физически. Я превысил EDIT [1/2 ГБ] кода, зарегистрированного, и репо всего несколько мегабайт. Это все еще Voodoo для меня. И, как кодер, я действительно не верю в Магию.

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

ИЗМЕНИТЬ 2: Когда я импортирую код в репозиторий, у меня есть сообщение "50 МБ загружено", и фактическое репо намного меньше. Сжатие Алгоса должно быть задействовано.

Кстати, смешно читать некоторые ответы и видеть, как много людей ДЕЙСТВИТЕЛЬНО верят в Магию и используют SVN без ДЕЙСТВИТЕЛЬНО Зная, что происходит за кулисами...

Ответ 1

Полагая это как ответ, по запросу Мики:

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

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

Это выполняется в командной строке так:

svnadmin create d:/path_to_repository 

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

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

Ответ 5

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

Ответ 6

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

Факторы, влияющие на большой локальный файл, заданный в рабочей копии:

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

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

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

Ответ 7

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