SVN больше не пишет .svn во всех подпапках? - PullRequest
20 голосов
/ 31 января 2012

Я недавно обновил свой SVN-клиент с 1.6.9 до 1.7.2 и после преобразования в новый формат я заметил, что больше нет .svn всех подпапок. Для моей конкретной конфигурации это не очень удобно.

Есть ли способ отменить это или вернуться к старому поведению, когда каждая подпапка из CO будет иметь .svn?

Ответы [ 2 ]

38 голосов
/ 31 января 2012

В Subversion 1.7 полностью переписана система управления метаданными рабочей копии Subversion с кодовым названием WC-NG. Старая система была одной из первых частей Subversion, и со временем ее стало трудно поддерживать и расширять. WC-NG предназначен для немедленного улучшения производительности, а также для многих будущих улучшений функций.

Ключевой особенностью изменений, внесенных в Subversion 1.7, является централизация хранилища метаданных рабочей копии в одном месте. Вместо каталога .svn в каждом каталоге рабочей копии у рабочих копий Subversion 1.7 есть только один каталог .svn - в корне рабочей копии. Этот каталог включает (среди прочего) базу данных на основе SQLite, которая содержит все метаданные, необходимые Subversion для этой рабочей копии.

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

Подробнее здесь.

2 голосов
/ 30 июля 2014

Самый простой способ получить subversion для записи каталогов .svn в каждом каталоге - это понизить версию вашего subversion до версии 1.7. Subversion 1.6.23 была последней версией того поведения, которое вам нужно.

Другой способ добиться этого, который будет работать с Subversion 1.7 и более поздними версиями, - это индивидуально проверить каждый подкаталог вашего проекта. Например, если у вас был проект со структурой каталогов, такой как:

project
`- bin
`- etc

Вы можете проверить это, выполнив что-то вроде:

mkdir project
cd project
svn co svn+ssh://foo@bar.org/src/project/bin
svn co svn+ssh://foo@bar.org/src/project/etc

Это допустимо только в том случае, если у вас мало каталогов и их организация невелика.

В противном случае, лучшим вариантом будет переход на более раннюю версию Subversion.

...