svn2git 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/ChangeLog.markdown +8 -1
- data/README.markdown +17 -4
- data/Rakefile +1 -0
- data/VERSION.yml +1 -1
- data/lib/svn2git/migration.rb +23 -8
- data/svn2git.gemspec +7 -3
- metadata +12 -5
data/.gitignore
CHANGED
data/ChangeLog.markdown
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
# 1.3.2 - 2010-03-12
|
2
|
+
|
3
|
+
Thanks to rajit for finding a problem with quoting in tag comments that were causing issues with svn2git's internal
|
4
|
+
quoting and providing a patch.
|
5
|
+
|
6
|
+
* Deal cleanly with any single quotes found in tag comments so that the 'git tag' commands run correctly
|
7
|
+
|
1
8
|
# 1.3.1 - 2009-06-09
|
2
9
|
|
3
10
|
Thanks to iteman for finding a problem with the tagging process and providing a patch.
|
@@ -50,4 +57,4 @@
|
|
50
57
|
|
51
58
|
# 1.0.0 - 2008-07-19
|
52
59
|
|
53
|
-
* Forked version from jcoglan.
|
60
|
+
* Forked version from jcoglan.
|
data/README.markdown
CHANGED
@@ -64,10 +64,12 @@ the svn repo.
|
|
64
64
|
Installation
|
65
65
|
------------
|
66
66
|
|
67
|
-
Make sure you have git installed, then install the gem:
|
67
|
+
Make sure you have git, ruby and rubygems installed, then install the gem:
|
68
68
|
|
69
|
-
$ sudo apt-get install git-core git-svn
|
70
|
-
$ sudo gem install
|
69
|
+
$ sudo apt-get install git-core git-svn ruby rubygems
|
70
|
+
$ sudo gem install svn2git --source http://gemcutter.org
|
71
|
+
|
72
|
+
*NB: Previous versions of the gem could be installed from GitHub as nirvdrum-svn2git. You can install that gem via `$ sudo gem install nirvdrum-svn2git --source http://gems.github.com`, but the nirvdrum-svn2git gem will no longer be updated. Please use the one hosted on gemcutter.*
|
71
73
|
|
72
74
|
Usage
|
73
75
|
-----
|
@@ -130,6 +132,17 @@ svn2git will load it out of there. This allows you to build up one authors
|
|
130
132
|
file for all your projects and have it loaded for each repository that you
|
131
133
|
migrate.
|
132
134
|
|
135
|
+
If you need a jump start on figuring out what users made changes in your
|
136
|
+
svn repositories the following command sequence might help. It grabs all
|
137
|
+
the logs from the svn repository, pulls out all the names from the commits,
|
138
|
+
sorts them, and then reduces the list to only unique names. So, in the end
|
139
|
+
it outputs a list of usernames of the people that made commits to the svn
|
140
|
+
repository which name on its own line. This would allow you to easily
|
141
|
+
redirect the output of this command sequence to ~/.svn2git/authors and have
|
142
|
+
a very good starting point for your mapping.
|
143
|
+
|
144
|
+
$ svn log | grep -E "r[0-9]+ \| [a-z]+ \|" | awk '{print $3}' | sort | uniq
|
145
|
+
|
133
146
|
Debugging
|
134
147
|
---------
|
135
148
|
|
@@ -169,4 +182,4 @@ FAQ
|
|
169
182
|
and the resulting code base would be different then if they checked out
|
170
183
|
that very same tag in the original svn repo. This is only due to the fact
|
171
184
|
that the svn tags allow changesets in them, making them not just annotated
|
172
|
-
tags.
|
185
|
+
tags.
|
data/Rakefile
CHANGED
@@ -10,6 +10,7 @@ begin
|
|
10
10
|
spec.homepage = "https://www.negativetwenty.net/redmine/projects/svn2git"
|
11
11
|
spec.email = "nirvdrum@gmail.com"
|
12
12
|
end
|
13
|
+
Jeweler::GemcutterTasks.new
|
13
14
|
|
14
15
|
rescue LoadError
|
15
16
|
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
data/VERSION.yml
CHANGED
data/lib/svn2git/migration.rb
CHANGED
@@ -129,7 +129,7 @@ module Svn2Git
|
|
129
129
|
run_command(cmd)
|
130
130
|
end
|
131
131
|
|
132
|
-
run_command("git config svn.authorsfile #{authors}")
|
132
|
+
run_command("git config svn.authorsfile #{authors}") unless authors.nil?
|
133
133
|
|
134
134
|
cmd = "git svn fetch"
|
135
135
|
unless exclude.empty?
|
@@ -150,17 +150,22 @@ module Svn2Git
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def get_branches
|
153
|
-
@
|
153
|
+
@local = run_command("git branch -l").split(/\n/).collect{ |b| b.strip }
|
154
|
+
@remote = run_command("git branch -r").split(/\n/).collect{ |b| b.strip }
|
154
155
|
@tags = @remote.find_all { |b| b.strip =~ %r{^tags\/} }
|
155
156
|
end
|
156
157
|
|
157
158
|
def fix_tags
|
158
159
|
@tags.each do |tag|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
run_command("
|
163
|
-
|
160
|
+
tag = tag.strip
|
161
|
+
id = tag.gsub(%r{^tags\/}, '').strip
|
162
|
+
subject = run_command("git log -1 --pretty=format:'%s' #{tag}")
|
163
|
+
date = run_command("git log -1 --pretty=format:'%ci' #{tag}")
|
164
|
+
subject = escape_quotes(subject)
|
165
|
+
date = escape_quotes(date)
|
166
|
+
id = escape_quotes(id)
|
167
|
+
run_command("GIT_COMMITTER_DATE='#{date}' git tag -a -m '#{subject}' '#{id}' '#{escape_quotes(tag)}'")
|
168
|
+
run_command("git branch -d -r #{tag}")
|
164
169
|
end
|
165
170
|
end
|
166
171
|
|
@@ -169,8 +174,9 @@ module Svn2Git
|
|
169
174
|
svn_branches.each do |branch|
|
170
175
|
branch = branch.strip
|
171
176
|
next if branch == 'trunk'
|
177
|
+
|
172
178
|
run_command("git checkout #{branch}")
|
173
|
-
run_command("git checkout -b #{branch}")
|
179
|
+
run_command("git checkout -b #{branch}")
|
174
180
|
end
|
175
181
|
end
|
176
182
|
|
@@ -191,11 +197,16 @@ module Svn2Git
|
|
191
197
|
def run_command(cmd)
|
192
198
|
log "Running command: #{cmd}"
|
193
199
|
|
200
|
+
ret = ''
|
201
|
+
|
194
202
|
IO.popen(cmd) do |stdout|
|
195
203
|
stdout.each do |line|
|
196
204
|
log line
|
205
|
+
ret << line
|
197
206
|
end
|
198
207
|
end
|
208
|
+
|
209
|
+
ret
|
199
210
|
end
|
200
211
|
|
201
212
|
def log(msg)
|
@@ -208,6 +219,10 @@ module Svn2Git
|
|
208
219
|
exit
|
209
220
|
end
|
210
221
|
|
222
|
+
def escape_quotes(str)
|
223
|
+
str.gsub("'", "'\\\\''")
|
224
|
+
end
|
225
|
+
|
211
226
|
end
|
212
227
|
end
|
213
228
|
|
data/svn2git.gemspec
CHANGED
@@ -1,12 +1,15 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
1
4
|
# -*- encoding: utf-8 -*-
|
2
5
|
|
3
6
|
Gem::Specification.new do |s|
|
4
7
|
s.name = %q{svn2git}
|
5
|
-
s.version = "1.3.
|
8
|
+
s.version = "1.3.2"
|
6
9
|
|
7
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
11
|
s.authors = ["James Coglan", "Kevin Menard"]
|
9
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-03-12}
|
10
13
|
s.default_executable = %q{svn2git}
|
11
14
|
s.email = %q{nirvdrum@gmail.com}
|
12
15
|
s.executables = ["svn2git"]
|
@@ -29,7 +32,7 @@ Gem::Specification.new do |s|
|
|
29
32
|
s.homepage = %q{https://www.negativetwenty.net/redmine/projects/svn2git}
|
30
33
|
s.rdoc_options = ["--charset=UTF-8"]
|
31
34
|
s.require_paths = ["lib"]
|
32
|
-
s.rubygems_version = %q{1.3.
|
35
|
+
s.rubygems_version = %q{1.3.6}
|
33
36
|
s.summary = %q{A tool for migrating svn projects to git}
|
34
37
|
|
35
38
|
if s.respond_to? :specification_version then
|
@@ -42,3 +45,4 @@ Gem::Specification.new do |s|
|
|
42
45
|
else
|
43
46
|
end
|
44
47
|
end
|
48
|
+
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: svn2git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 3
|
8
|
+
- 2
|
9
|
+
version: 1.3.2
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- James Coglan
|
@@ -10,7 +15,7 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date:
|
18
|
+
date: 2010-03-12 00:00:00 -05:00
|
14
19
|
default_executable: svn2git
|
15
20
|
dependencies: []
|
16
21
|
|
@@ -47,18 +52,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
47
52
|
requirements:
|
48
53
|
- - ">="
|
49
54
|
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
50
57
|
version: "0"
|
51
|
-
version:
|
52
58
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
59
|
requirements:
|
54
60
|
- - ">="
|
55
61
|
- !ruby/object:Gem::Version
|
62
|
+
segments:
|
63
|
+
- 0
|
56
64
|
version: "0"
|
57
|
-
version:
|
58
65
|
requirements: []
|
59
66
|
|
60
67
|
rubyforge_project:
|
61
|
-
rubygems_version: 1.3.
|
68
|
+
rubygems_version: 1.3.6
|
62
69
|
signing_key:
|
63
70
|
specification_version: 3
|
64
71
|
summary: A tool for migrating svn projects to git
|