Проект

Общее

Профиль

Svn-git » История » Версия 4

Андрей Волков, 2011-12-12 13:27

1 1 Андрей Волков
h1. Миграция SVN -> GIT
2
3
h2. Пример миграции:
4
5 3 Андрей Волков
Задача: мигрировать svn репозиторий https://svn.nolty.ru/abackup/ в git репозиторий git@git.nolty.ru:abackup.git
6 1 Андрей Волков
7
Находим список пользователей (коммитеров SVN):
8
<pre>
9
svn log https://svn.nolty.ru/abackup/ |grep '^r[0-9]\+ ' | cut -d ' ' -f3 | sort | uniq > ~/svn.nolty.ru-git-converted/git-users.txt
10
vi git-users.txt
11
</pre>
12 2 Андрей Волков
13
git-users.txt
14
<pre>
15
volkov = Volkov Andrey <email@mydomain.ru>
16 1 Андрей Волков
ivanov = Ivanov Ivan <ivan@mydomain.ru>
17 3 Андрей Волков
</pre>
18
19
Ставим ruby, rubygems, git-svn 
20
21
ubuntu:
22
<pre>
23
sudo apt-get install git-core git-svn ruby rubygems
24
</pre>
25
26
gentoo пакеты:
27
<pre>
28
dev-vcs/git subversion perl
29
dev-vcs/subversion perl
30
dev-ruby/rubygems
31
</pre>
32
33 4 Андрей Волков
Устанавливаем gem svn2git в домашнюю папку (чтобы не портить систему):
34 3 Андрей Волков
<pre>
35
gem install -V --user-install --no-ri --no-rdoc --source http://gemcutter.org svn2git
36
export RUBYOPT=-rauto_gem
37
</pre>
38 1 Андрей Волков
39 4 Андрей Волков
Если проект содержит стандартные папки tags, trunk, branches, то продолжаем.
40
Если что-то не по стандарту, то используем опции svn2git:
41
<pre>
42
--trunk TRUNK_PATH           Subpath to trunk from repository URL (default: trunk)
43
--branches BRANCHES_PATH     Subpath to branches from repository URL (default: branches)
44
--tags TAGS_PATH             Subpath to tags from repository URL (default: tags)
45
--notrunk                    Do not import anything from trunk
46
--nobranches                 Do not try to import any branches
47
--notags                     Do not try to import any tags
48
</pre>
49
50
В моем случае все по стандарту.
51 3 Андрей Волков
Конвертируем:
52
<pre>
53
mkdir ~/svn.nolty.ru-git-converted/abackup
54
cd ~/svn.nolty.ru-git-converted/abackup
55
~/.gem/ruby/1.8/gems/svn2git-2.1.0/bin/svn2git https://svn.nolty.ru/abackup/ --authors ../git-users.txt -v
56
</pre>
57
58
Смотрим, что получилось:
59
<pre>
60
git branch -l
61
git tags -l
62
</pre>
63
64
Складываем сконвертированный git репозиторий на сервер git.nolty.ru:
65
<pre>
66
git remote add origin git@git.nolty.ru:abaсkup.git
67
git push --all
68
git push --tags
69 2 Андрей Волков
</pre>