Действия
Миграция SVN -> GIT¶
Пример миграции:¶
Задача: мигрировать svn репозиторий https://svn.nolty.ru/abackup/ в git репозиторий git@git.nolty.ru:abackup.git
Находим список пользователей (коммитеров SVN):
svn log https://svn.nolty.ru/abackup/ |grep '^r[0-9]\+ ' | cut -d ' ' -f3 | sort | uniq > ~/svn.nolty.ru-git-converted/git-users.txt vi git-users.txt
git-users.txt
volkov = Volkov Andrey <email@mydomain.ru> ivanov = Ivanov Ivan <ivan@mydomain.ru>
Ставим ruby, rubygems, git-svn
ubuntu:
sudo apt-get install git-core git-svn ruby rubygems
gentoo пакеты:
dev-vcs/git subversion perl dev-vcs/subversion perl dev-ruby/rubygems
Устанавливаем gem svn2git в домашнюю папку (чтобы не портить систему):
gem install -V --user-install --no-ri --no-rdoc --source http://gemcutter.org svn2git export RUBYOPT=-rauto_gem
Если проект содержит стандартные папки tags, trunk, branches, то продолжаем.
Если что-то не по стандарту, то используем опции svn2git:
--trunk TRUNK_PATH Subpath to trunk from repository URL (default: trunk) --branches BRANCHES_PATH Subpath to branches from repository URL (default: branches) --tags TAGS_PATH Subpath to tags from repository URL (default: tags) --notrunk Do not import anything from trunk --nobranches Do not try to import any branches --notags Do not try to import any tags
В моем случае все по стандарту.
Конвертируем:
mkdir ~/svn.nolty.ru-git-converted/abackup cd ~/svn.nolty.ru-git-converted/abackup ~/.gem/ruby/1.8/gems/svn2git-2.1.0/bin/svn2git https://svn.nolty.ru/abackup/ --authors ../git-users.txt -v
Смотрим, что получилось:
git branch -l git tags -l
Складываем сконвертированный git репозиторий на сервер git.nolty.ru:
git remote add origin git@git.nolty.ru:abaсkup.git git push --all git push --tags
Обновлено Андрей Волков почти 13 года назад · 4 изменени(я, ий)