Как переместить проект из одного SVN-хранилища в другое, когда свап svnadmin не помогает - PullRequest
0 голосов
/ 02 мая 2011

У нас есть огромный репозиторий SVN с несколькими проектами, и нам нужно переместить один из них в другой репозиторий SVN.

Простой способ сделать это (выгрузить базу данных с помощью svnadmin dump, отфильтровать ее с помощью svndumpfilter и перезагрузитьэто в новый репозиторий не работает, потому что репозиторий слишком большой (файл дампа составляет около 500 ГБ), а svndumpfilter и другие подобные программы никогда не заканчиваются.

Я использовал snvsync для копирования конкретного проекта в новый репозиторий.работает нормально, за исключением 2 пунктов:

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

    / repos / trunk / projectA /

Когда я пытаюсь разветвлять (копировать) projectA в / repos / branch / projectA, я получаю ошибку: «Reхранилище постоянно перемещено в http: / host / repos /;пожалуйста, переместите "

. Любая попытка создать папку на том же уровне, что и транк, приводит к той же ошибке. В конце я хочу перейти к структуре папок" strandard ", например:

/repos/projectA/trunk
/repos/projectA/branches
/repos/projectA/tags

но не нашел способ преодолеть ошибку выше.

1 Ответ

3 голосов
/ 02 мая 2011

Предполагается, что копия svnsync доступна только для чтения по очевидным причинам - если вы подтвердите ее, а затем продолжите синхронизацию с оригиналом, копия не будет такой же.Когда вы попытаетесь синхронизировать его позже, это должно привести к ошибке, но это единственная причина.Нет технической причины, по которой это должен быть RO, и фактически, когда у вас есть копия и ваш оригинал умирает, она создается как идентичная копия, которую вы можете начать использовать в качестве резервной замены.

Ваша проблема с его использованием заключается в том, что вы все еще используете свою оригинальную рабочую копию, которая ссылается на исходное репо.Вам нужно либо удалить WC и повторно оформить заказ, либо сообщить, что хранилище перемещено - с помощью команды svn switch --relocate.Я не понимаю, как вы могли бы использовать svnsync, чтобы получить макет, отличный от вашего исходного репо (хотя, если вы не хотите изменить макет после того, как вы синхронизировали его, вы можете выгрузить, отфильтровать и загрузить небольшой репона новый)

Вы пробовали rsvndump , который позволяет создавать дамп частичных репозиториев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...