Как импортировать часть репозитория SVN в базар

Ситуация

Я работаю на базаре 2.4.1

Компания "Хостинг проектов" размещает мой svn-репозиторий для Project A в:

https://svn.example.com/myrepo/trunk/ProjectA/

У меня нет доступа svn-admin к репо на svn.example.com,

В пределах projectA репо, есть каталог, который содержит весь код для Component X, Свое местоположение:

https://svn.example.com/myrepo/trunk/ProjectA/ComponentX

Цель

Я пытаюсь отколоться Component X от Project ASVN репо стать Project B, куда Project B версия на базаре.

План

Мой план состоит в том, чтобы:

  1. Создайте локальное хранилище bzr для Project B
  2. использование bzr svn-import импортировать Component X от Project A в мой местный Project B
  3. Затем нажмите Project B на панель запуска
  4. Затем, svn-delete Старый Component X Direcotry из SVN РЕПО.

Я застрял на шаге 2.

Все идет нормально

Итак, на моей Windows XP я создал BZR репо для Project B:

# cd C:\me\OpenSource\
# bzr init-repo ProjectB

Затем я перешел в этот каталог:

# cd ProjectB

Это идет немного не так

Затем я попытался bzr svn-import чтобы получить каталог svn:

# bzr svn-import https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/

Это, однако, генерирует ошибку:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Я пробовал разные вещи и продолжаю получать одну и ту же ошибку.

Вещи, которые я пробовал

Попытка: изменение subversion.conf, чтобы указать, что ComponentX является ветвью

Посмотрев на 'bzr help svn-layout'Я изменил C:\Documents and Settings\Me\Application Data\bazaar\2.0\subversion.conf и добавил строку, чтобы указать, что /ComponentX следует рассматривать как ветку:

[203ae883-c723-44c9-aabd-cb56e4f81c9a]
branches = */ComponentX

Это не сработало. Та же ошибка:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Попытка: указание другого макета хранилища в качестве аргумента

т.е. передавая это в качестве аргумента: --layout=root (Потому что я хотел, чтобы этот путь рассматривался как корень нового репозитория bzr):

# bzr svn-import --layout=root https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/

Это не сработало. Та же ошибка:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Итак, я попытался просто сказать --layout=none:

# bzr svn-import --layout=none https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/

Это не сработало. Та же ошибка:

bzr: ERROR: The specified path is inside a branch. Specify a different URL or a
different repository layout (see also 'bzr help svn-layout').

Если честно, я сейчас взломал.

Я просто не знаю, где я иду не так.

2 ответа

Решение

svn-import специально предназначен для импорта всех веток в хранилище Subversion. Параметр --layout используется для указания того, что он считает ветвью. Кажется, вы пытаетесь клонировать одну ветку, для которой "bzr branch" - действительно правильная команда.

Чтобы объяснить макеты:

Звездочки в настройке "ветки = " не пересекают более одного уровня каталогов. Установка "branch = trunk/*/ComponentX" в subversion.conf будет правильным значением. Кажется, что ошибка от bzr-svn немного сбивает с толку. Действительно, следует сказать, что указанный вами путь не содержит ветвей.

Это означает, что --layout=root просто заставит его считать https://svn.example.com/myrepo ответвлением. Это объясняет, почему вы получаете ошибку об указании ветви внутри пути.

В ответ на мой собственный вопрос.

Вместо того, чтобы бороться с bzr svn-import обойти проблему с помощью bzr branch вместо. Это на самом деле не отвечает на вопросы, почему bzr svn-import выдает ошибки, но решает проблему.

Итак, в ситуации, когда компания "Хостинг проектов" размещает ваш svn-репозиторий для Project A в:

https://svn.example.com/myrepo/trunk/ProjectA/

и в пределах projectA репо, есть каталог, который содержит весь код для Component X, Свое местоположение:

https://svn.example.com/myrepo/trunk/ProjectA/ComponentX

и где цель отколоться Component X от Project A SVN репо стать Project B, куда Project B версия на базаре.

План должен быть:

  1. Создайте локальное хранилище bzr для Project B
  2. использование bzr branch сбросить Component X от Project A в мой местный Project B
  3. Затем нажмите Project B на панель запуска
  4. Рекомендуется: не забудьте svn-удалить Component X от Project A чтобы избежать дублирования.

Вот так:

1. Создайте локальный репозиторий bzr для Project B

Итак, на моей Windows XP я создаю BZR репо для Project B:

# cd C:\me\OpenSource\
# bzr init-repo ProjectB

Затем перейдите в этот каталог:

# cd ProjectB

2. Используйте bzr branch сбросить Component X от Project A в мой местный Project B

Затем создайте локальную ветку из подкаталога svn repo:

# bzr branch https://svn.example.com/myrepo/trunk/ProjectA/ComponentX/ ComponentX

3. Затем нажмите Project B на панель запуска

Затем нажмите его, чтобы создать ветвь, размещенную на панели запуска, в соответствии с инструкциями в документации на базаре:

# bzr push lp:~mylaunchpadteam/mylaunchpadproject/trunk

Затем, возможно, настройте структуру каталогов и добавьте файлы, чтобы преобразовать их в "проект".

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