SVN загрузить новый репозиторий

В настоящее время я переношу репозиторий из Linux в Windows. У меня проблема в том, что при загрузке нового хранилища иерархия [reponame]\[reponame], Есть ли способ переместить все папки на один уровень вверх?

ОБНОВИТЬ

использовал следующую команду, чтобы получить репозиторий svnadmin load [repo] > [repofile].dump

1 ответ

Какова была иерархия хранилища в Unix? Вы использовали http там?

Я не уверен на 100%, что ты имеешь в виду. Вы говорите, что хранилище содержит каталог, который содержит имя хранилища? Или вы говорите, что когда вы делаете заказ, теперь вы делаете что-то вроде этого:

C> svn co http://server/foo/foo/trunk

Как теперь выглядит команда checkout?

Когда вы говорите, что в репозитории вы говорите об одном каталоге репозитория, который вы создали с помощью svnadmin create команда, или вы говорите о нескольких проектах в одном хранилище?

Допустим, я использую svnserve обслуживать мой репозиторий. Мы позвоним в мой репозиторий myproj и я хочу обслуживать свой репозиторий на моей машине softserve, Когда я хочу сделать заказ, я делаю это:

$ svn co svn://softserve/trunk myproj-trunk

Обратите внимание, у меня есть только имя моего сервера. URL даже не включает имя моего хранилища. Это потому что svnserve может обслуживать только один репозиторий. Если у меня есть несколько репозиториев, мне нужно будет иметь отдельные машины, объединить все репозитории в один репозиторий или использовать разные порты.

Apache может обслуживать несколько репозиториев, но для каждого репозитория нужен виртуальный веб-каталог для доступа, поэтому Apache знает, что при поиске URL-адреса это репозиторий Subversion, а не каталог из каталога httpdocs. Таким образом, в URL-адресе Apache есть по крайней мере еще один каталог.

Существует два отдельных способа указания хранилища Apache Subversion. Вы можете указать один репозиторий следующим образом:

<Location /myproj>
   DAV svn
   SVNPath C:/path/to/repository/myproj
</Location>

<Location /project_two>
   DAV svn
   SVNPath C:/path/to/repository/project_two
</Location>

В этом случае каждый виртуальный каталог Apache имеет один репозиторий. Таким образом, когда я делаю заказ, моя команда выглядит так:

$ svn co http://softserve/myproj/trunk myproj-trunk

Обратите внимание, что в этом URL есть дополнительный каталог по сравнению с URL-адресом SVN. Это потому, что теперь мне нужно указать не только сервер, но и виртуальный каталог Apache. В этом случае я согласовал имена виртуальных каталогов с именем своего репозитория. У меня нет причин делать это, но иначе было бы глупо.

Что касается пользователя, он просто добавляет имя хранилища в URL. Это все еще имеет смысл. Если я хочу оформить заказ из myproj, Я использую http://softserve/myproj и если я хочу оформить заказ из project_two, Я использую http://softserve/project_two,

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

Чтобы обойти эту проблему, вы можете использовать SVNParentPath спецификация вместо SVNPath, Это позволяет вам указать не каталог хранилища Subversion, а родительский каталог, в котором он должен находиться:

<Location /source>
   DAV svn
   SVNParentPath C:/path/to/repository
</Location>

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

Проблема в том, что теперь мне нужно указать не только виртуальный каталог Apache, но и имя репозитория. Таким образом, в моем URL есть другой каталог. (В этом случае я назвал мой виртуальный каталог Apache Parent source).

$ svn co http://softserve/source/myproj/trunk myproj-trunk

Я только что скачал VisualSVN Server и посмотрел на него. Сервер VisualSVN запускает Apache в серверной части. Он просто автоматически настраивает его для вас и создает хороший простой интерфейс. Глядя на созданную конфигурацию Apache под C:\Program Files\VisualSVN Source\conf\httpd.conf, Я вижу это:

Я могу себе представить, когда вы настраиваете VisualSVN, он делает последнее автоматически. В конце концов, именно поэтому люди будут платить за VisualSVN - он позаботится обо всей обработке хранилища Apache для вас. И, в вашем случае, вы сделали что-то вроде этого:

<Location /foo>
   DAV svn
   SVNPath C:/path/to/repository
</Location>

И, единственный репозиторий под C:/path/to/repository твой foo репозиторий. Таким образом, ваш URL выглядит так:

<Location /svn/>
   [...]
   SVNParentPath C:/Repositories/
   [...]
</Location>

Итак, если вы положите foo хранилище под C:\Repositories, ваш заказ выглядит так:

 svn co http://softserve/svn/foo/trunk foo-trunk

Я не играл с VisualSVN Server, чтобы посмотреть, смогу ли я изменить svn Имя виртуального каталога Apache из внешнего интерфейса, но я могу себе представить, что вы купили полную версию, которая допускает дополнительную конфигурацию, и вы назвали свой каталог тем же именем, что и имя вашего хранилища. Таким образом, у вас есть

<Location /foo/>
   [...]
   SVNParentPath C:/Repositories/
   [...]
</Location>

И, когда вы выезжаете из foo, вы получите это:

 svn co http://softserve/foo/foo/trunk foo-trunk

Двойное имя хранилища, которое вы упомянули.

Я могу представить, что вы можете взломать сырье http.conf файл для использования SVNPath вместо SVNParentPathи, следовательно, ваш URL будет выглядеть примерно так:

 svn co http://softserve/foo/trunk foo-trunk

Но я не знаю, как Visual SVN справится с этим. Я подозреваю, что лучше всего было бы просто изменить имя виртуального каталога Apache на имя по умолчанию svn или измените его на source или же src,

Другие вопросы по тегам