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

611
JW.

Ситуация

Я бегу на базаре 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«S SVN репо стать 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директория из репозитория 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'). 

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

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

1

2 ответа на вопрос

1
jelmer

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

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

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

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

0
JW.

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

Вместо того, чтобы бороться с 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 

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

если честно, я бы просто использовал svn export, выбросил историю ревизий и сделал bzr add *; бзр пуш. Sirex 12 лет назад 0
Да. Было бы проще, если бы вы не хотели копить историю изменений. JW. 12 лет назад 0