Как импортировать часть репозитория 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 A
SVN репо стать Project B
, куда Project B
версия на базаре.
План
Мой план состоит в том, чтобы:
- Создайте локальное хранилище bzr для
Project B
- использование
bzr svn-import
импортироватьComponent X
отProject A
в мой местныйProject B
- Затем нажмите
Project B
на панель запуска - Затем,
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
версия на базаре.
План должен быть:
- Создайте локальное хранилище bzr для
Project B
- использование
bzr branch
сброситьComponent X
отProject A
в мой местныйProject B
- Затем нажмите
Project B
на панель запуска - Рекомендуется: не забудьте 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
Затем, возможно, настройте структуру каталогов и добавьте файлы, чтобы преобразовать их в "проект".