2012-03-27 4 views
7

Я пытаюсь перенести репозиторий из SVN в GIT с помощью svn2git. Это проект с открытым исходным кодом, открытый SVN-репозиторий Url: http://svn.verinice.org/svnroot/. Пробуйте миграции ...Ошибка миграции SVN на GIT с использованием svn2git

SVN структуры репозитория:

  • ФИЛИАЛЫ
  • TAGS
  • ЛИНИИ

Я использовал следующую команду, чтобы клонировать эту Repo:

svn2git http://svn.verinice.org/svnroot 
    --trunk TRUNK 
    --branches BRANCHES 
    --tags TAGS 

Но эта команда только переносит только одну ветку и вообще не теги. Я использовал эти команды для проверки результата:

[[email protected] git-repo]# git branch -a 
* master 
    springy 
    remotes/springy 
[[email protected] git-repo]# git tag -l 
[[email protected] git-repo]# 

Как перенести все ветки и теги? Спасибо за помощь!

UPDATE:

После использования параметра --authors авторов-file.txt и добавляющие имя и адрес электронного мерзавца конфигурации svn2git работает отлично:

git config --global user.name "your name" 
git config --global user.email "[email protected]" 

Вы должны добавить линия для каждые SVN пользователь в authors-file.txt:

svn-user-name = Full Name <[email protected]> 

git branch -a и git tag -l теперь возвращает все ветви и метки.

ответ

10

У меня нет опыта работы с svn2git, но вместо этого вы можете использовать git svn clone, чтобы перейти на git. Обратите внимание, что это займет очень много времени. См. git help svn для получения дополнительной информации.

Обратите внимание, что это не приведет к созданию правильных тегов в git, скорее всего из-за различий в тегах git и svn, обсуждаемых в FAQ svn2git. Вместо этого инструмент создаст ветки тегов. Если вы хотите превратить их в соответствующие теги (и, поскольку я предполагаю, что вы вообще не вернетесь к SVN, это не должно причинять никакого вреда), есть обсуждение here о том, как написать сценарий, чтобы сделать только то.

+1

+1, git-svn достаточно, чтобы клонировать svn repo полностью –

+0

Хорошо работает.Филиалы вместо тегов не навредны - приняты. –

1

Важно знать, что все эти инструменты построены поверх встроенной SVN-поддержки git git-svn. Таким образом, можно напрямую использовать git-svn для клонирования, выбора наборов изменений и т. Д., Но лучше иметь один скрипт/инструмент, который поможет нам выполнять все наши операции во время миграции и, следовательно, необходимость в таких инструментах.

Я использовал скрипт оболочки svn2git, размещенный на https://github.com/nirvdrum/svn2git, для подрывной работы для миграции git, и это помогло, особенно если мы захотели вытащить ревизии из нашего репозитория subversion через периодические интервалы, так как мы не полностью отключили реверсирование subversion по понятным причинам. Вы можете просмотреть скрипт ruby ​​wrapper, mig.rb, чтобы узнать больше.