Где Subversion физически хранит свою базу данных? - PullRequest
11 голосов
/ 17 января 2011

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

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

РЕДАКТИРОВАТЬ 2: Когда я импортирую код в репозиторий, у меня появляется сообщение «50 МБ загружено», и реальное хранилище намного меньше. Сжатие Algos должно быть вовлечено.

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

Ответы [ 7 ]

7 голосов
/ 17 января 2011

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

6 голосов
/ 18 января 2011

В качестве ответа, согласно запросу Мики:

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

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

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

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

3 голосов
/ 17 января 2011

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

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

1 голос
/ 17 января 2011

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

1 голос
/ 17 января 2011

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

Это делается в версии командной строки следующим образом:

svnadmin create d:/path_to_repository 

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

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

0 голосов
/ 03 мая 2011

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

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

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

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

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

0 голосов
/ 17 января 2011

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

...