1

Ситуация

Я бегу на базаре 2.4.1

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

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

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

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

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

Цель

Я пытаюсь отделить Component X от репозитория SVN Project A чтобы стать Project B Где Project B версии на базаре.

План

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

  1. Создайте локальный репозиторий bzr для Project B
  2. Используйте bzr svn-import для импорта Component X из Project A в мой локальный Project B
  3. Затем нажмите Project B на Launchpad
  4. Затем svn-delete старую директиву Component X из репозитория 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 ответа2

1

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

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

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

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

0

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

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

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

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

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

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

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

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

  1. Создайте локальный репозиторий bzr для Project B
  2. Используйте bzr branch для выгрузки Component X из Project A в мой локальный Project B
  3. Затем нажмите Project B на Launchpad
  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 на Launchpad

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

# bzr push lp:~mylaunchpadteam/mylaunchpadproject/trunk

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .