Перенос репозитория svn без транка в git с помощью reposurgeon
Я пытаюсь преобразовать старый репозиторий svn в git. Прочитав пару сообщений, описывающих недостатки использования git-svn для этой задачи, особенно для репозиториев с нестандартной компоновкой, я решил попробовать репохирург. После первоначального использования версии из исходных кодов пакета Ubuntu (4.3) я на всякий случай переключился на самую последнюю версию (4.14; собран из исходных кодов).
К сожалению, мне пока не удалось создать ничего, кроме пустого репозитория git. Кажется, я не смог понять, как правильно пользоваться репохирургом.
Вот основная структура репозитория svn, который я пытаюсь преобразовать:
- ветви
- 1.0.x
- 1.1.x
- теги
- развитие
- 1.0.0
- 1.0.1
- 1.0.2
- 1.1.0
- производство
- 1.0.0
- 1.0.1
- развитие
Внутри репозитория есть еще кое-что, но в этом суть. Здесь важно отметить
- Нет багажника
- Структура тега не плоская
Сейчас я пытаюсь выполнить минимальное количество шагов. Я использую http://www.catb.org/~esr/reposurgeon/repository-editing.html в качестве ориентира, поэтому после создания карты авторов для репозитория я сделал следующее:
repotool mirror URL project-mirror
reposurgeon
read project-mirror
authors read <project-mirror.map
prefer git
rebuild project-git
Когда я бегу read project-mirror
внутри reposurgeon (project-mirror - это каталог зеркала, которое я создал с помощью repotool), я получаю следующий результат:
reposurgeon: nonexistent source "test" on pathmap copy
reposurgeon: component "test" to be deleted is missing
reposurgeon: 1898910: missing required date field
* project-mirror
reposurgeon: 2 new log message(s)
Сначала создайте дамп SVN (либо используя repotool export
или svnadmin dump
на моем локальном зеркале) и чтение, которое вместо этого приводит к тому же результату.
Бег rebuild project-git
дает следующий результат:
reposurgeon: not trying to checkout an empty repository
reposurgeon: rebuild is complete.
reposurgeon: preserved files restored.
Это создает пустой репозиторий git: без коммитов, без веток, без тегов. Я не ожидаю, что цепочка команд, которую я опубликовал выше, приведет именно к тому результату, который я хочу (в конце концов, в документации даже упоминается, что получение этого является итеративным процессом), но я ожидал хотя бы несколько коммитов / или ветки внутри репозитория git.
Приветствуются любые указатели в правильном направлении.
PS: Также может быть важно отметить, что сервер SVN можно и нельзя изменять каким-либо образом во время этого процесса. У меня есть доступ только для чтения к рассматриваемому репозиторию. У меня нет административного доступа к этому серверу SVN.
0 ответов
Преобразование вашего репозитория не должно представлять проблемы. Вот что стоит проверить:
- Укажите тип источника; использовать
sourcetype svn
для этого. - Укажите структуру вложенных тегов с помощью
branchify branches/* tags/development/* tags/production/*
Вы также можете сгладить имена тегов, например, с помощью
branchmap :tags/development/(.+):tags/dev_\1: \
:tags/production/(.+):tags/prod_\1: