/
README
89 lines (66 loc) · 2.18 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
== svn2git
+svn2git+ is a tiny utility for migrating projects from Subversion to Git while keeping
the trunk, branches and tags where they should be. It uses git-svn to clone an svn repository
and does some clean-up to make sure branches and tags are imported in a meaningful way, and
that the code checked into master ends up being what's currently in your svn trunk rather
than whichever svn branch your last commit was in.
=== Examples
Say I have this code in svn:
trunk
...
branches
1.x
2.x
tags
1.0.0
1.0.1
1.0.2
1.1.0
2.0.0
git-svn will go through the commit history to build a new git repo. It will import all branches
and tags as remote svn branches, whereas what you really want is git-native local branches and
git tag objects. So after importing this project I'll get:
$ git branch
* master
$ git branch -a
* master
1.x
2.x
tags/1.0.0
tags/1.0.1
tags/1.0.2
tags/1.1.0
tags/2.0.0
trunk
$ git tag -l
[ empty ]
After svn2git is done with your project, you'll get this instead:
$ git branch
* master
1.x
2.x
$ git tag -l
1.0.0
1.0.1
1.0.2
1.1.0
2.0.0
Finally, it makes sure the HEAD of master is the same as the current trunk of the svn repo.
=== Installation
Make sure you have git installed, then install the gem:
$ sudo apt-get install git-core git-svn
$ sudo gem install svn2git
=== Usage
To create a git repo from an existing svn repo:
$ svn2git http://svn.yoursite.com/path/to/repo
This will create a git repository in the current directory with the git version of the svn
repository. If you're not using the standard trunk/branches/tags layout, you can pass arguments
to tell git-svn what to look for:
$ svn2git http://svn.yoursite.com/path/to/repo trunk=the_trunk tags=taggings
=== Authors
To convert all your svn authors to git format, create a file somewhere on your system with
the list of conversions to make, one per line, for example:
jcoglan = James Coglan <jcoglan@never-you-mind.com>
stnick = Santa Claus <nicholas@lapland.com>
Then pass an +authors+ option to +svn2git+ pointing to your file:
svn2git http://repos.com/myproject authors=~/authors.txt