knu-svn2git 1.3.1

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 ADDED
@@ -0,0 +1 @@
1
+ pkg
@@ -0,0 +1,53 @@
1
+ # 1.3.1 - 2009-06-09
2
+
3
+ Thanks to iteman for finding a problem with the tagging process and providing a patch.
4
+
5
+ * Fixed a problem with creating actual git tags when the SVN tags path was named anything other than 'tags.'
6
+
7
+ # 1.3.0 - 2009-06-09
8
+
9
+ Many thanks to mss for the patches making up most of this release.
10
+
11
+ * Fixed a problem where tags didn't get the original date and time.
12
+ * New switch --exclude which can be used to specify a PCRE pattern to exclude paths from the import.
13
+ * New switches --no{trunk,branches,tags} to skip import of those.
14
+ * Improved docs.
15
+
16
+ # 1.2.4 - 2009-05-04
17
+
18
+ * No changes. I ran the jeweler command twice inadvertently. Tearing down the release would be more harmful than helpful.
19
+
20
+ # 1.2.3 - 2009-05-04
21
+
22
+ * Yanked out the code referencing the gem by name. This shouldn't be necessary at all.
23
+
24
+ # 1.2.2 - 2009-05-04
25
+
26
+ * Updated the reference gem in the binary to use this one and not the one on RubyForge.
27
+
28
+ # 1.2.1 - 2009-04-19
29
+
30
+ * Fixed a problem with the svn2git binary not loading command-line args properly.
31
+
32
+ # 1.2.0 - 2009-04-17
33
+
34
+ * Reworked command-line options so they work similarly to every other app in the world.
35
+ * Better error messaging when no URL provided.
36
+ * Improved docs.
37
+
38
+ # 1.1.1 - 2009-04-15
39
+
40
+ * Started using Jeweler for gem management.
41
+ * Fixed issue with not loading up RubyGems appropriately.
42
+
43
+ # 1.1.0 - 2009-01-02
44
+
45
+ * First release since nirvdrum fork.
46
+
47
+ * Fixed issues with handling of tags and branches.
48
+ * Added better logging of output from git-svn.
49
+ * Wrap external command processing to capture failures.
50
+
51
+ # 1.0.0 - 2008-07-19
52
+
53
+ * Forked version from jcoglan.
data/MIT-LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2008 James Coglan, Kevin Menard
2
+ Copyright (c) 2009 Akinori MUSHA
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+
data/README.markdown ADDED
@@ -0,0 +1,179 @@
1
+ svn2git
2
+ =======
3
+
4
+ _svn2git_ is a tiny utility for migrating projects from Subversion to Git
5
+ while keeping the trunk, branches and tags where they should be. It uses
6
+ git-svn to clone an svn repository and does some clean-up to make sure
7
+ branches and tags are imported in a meaningful way, and that the code checked
8
+ into master ends up being what's currently in your svn trunk rather than
9
+ whichever svn branch your last commit was in.
10
+
11
+ Examples
12
+ --------
13
+
14
+ Say I have this code in svn:
15
+
16
+ trunk
17
+ ...
18
+ branches
19
+ 1.x
20
+ 2.x
21
+ tags
22
+ 1.0.0
23
+ 1.0.1
24
+ 1.0.2
25
+ 1.1.0
26
+ 2.0.0
27
+
28
+ git-svn will go through the commit history to build a new git repo. It will
29
+ import all branches and tags as remote svn branches, whereas what you really
30
+ want is git-native local branches and git tag objects. So after importing this
31
+ project I'll get:
32
+
33
+ $ git branch
34
+ * master
35
+ $ git branch -a
36
+ * master
37
+ 1.x
38
+ 2.x
39
+ tags/1.0.0
40
+ tags/1.0.1
41
+ tags/1.0.2
42
+ tags/1.1.0
43
+ tags/2.0.0
44
+ trunk
45
+ $ git tag -l
46
+ [ empty ]
47
+
48
+ After svn2git is done with your project, you'll get this instead:
49
+
50
+ $ git branch
51
+ * master
52
+ 1.x
53
+ 2.x
54
+ $ git tag -l
55
+ 1.0.0
56
+ 1.0.1
57
+ 1.0.2
58
+ 1.1.0
59
+ 2.0.0
60
+
61
+ Finally, it makes sure the HEAD of master is the same as the current trunk of
62
+ the svn repo.
63
+
64
+ Installation
65
+ ------------
66
+
67
+ Make sure you have git installed, then install the gem:
68
+
69
+ $ sudo apt-get install git-core git-svn
70
+ $ sudo gem install knu-svn2git
71
+
72
+ Usage
73
+ -----
74
+
75
+ There are a number of ways in which you can create a git repo from an existing
76
+ svn repo. The differentiating factor is the svn repo layout. Below is an
77
+ enumerated listing of the varying supported layouts and the proper way to
78
+ create a git repo from a svn repo in the specified layout.
79
+
80
+ 1. The svn repo is in the standard layout of (trunk, branches, tags) at the
81
+ root level of the repo.
82
+
83
+ $ svn2git http://svn.example.com/path/to/repo
84
+
85
+ 2. The svn repo is NOT in standard layout and has only a trunk and tags at the
86
+ root level of the repo.
87
+
88
+ $ svn2git http://svn.example.com/path/to/repo --trunk dev --tags rel --nobranches
89
+
90
+ 3. The svn repo is NOT in standard layout and has only a trunk at the root
91
+ level of the repo.
92
+
93
+ $ svn2git http://svn.example.com/path/to/repo --trunk trunk --nobranches --notags
94
+
95
+ 4. The svn repo is NOT in standard layout and has no trunk, branches, or tags
96
+ at the root level of the repo. Instead the root level of the repo is
97
+ equivalent to the trunk and there are no tags or branches.
98
+
99
+ $ svn2git http://svn.example.com/path/to/repo --rootistrunk
100
+
101
+ Or you may want to only grab the trunk from a svn repo.
102
+
103
+ $ svn2git http://svn.example.com/path/to/repo/trunk repo --rootistrunk
104
+
105
+ 5. The svn repo is in the standard layout but you want to exclude the massive
106
+ doc directory and the backup files you once accidently added.
107
+
108
+ $ svn2git http://svn.example.com/path/to/repo --exclude doc --exclude '.*~$'
109
+
110
+ Note that in the above cases the trunk, branches, tags options are
111
+ simply folder names relative to the provided repo path. For example if
112
+ you specified trunk=foo branches=bar and tags=foobar it would be
113
+ referencing http://svn.example.com/path/to/repo/foo as your trunk, and
114
+ so on. However, in case 4 it references the root of the repo as trunk.
115
+
116
+ If you want to fix an existing repository created by git-svn, run the
117
+ following command.
118
+
119
+ $ svn2git --fix repo
120
+
121
+
122
+ Authors
123
+ -------
124
+
125
+ To convert all your svn authors to git format, create a file somewhere on your
126
+ system with the list of conversions to make, one per line, for example:
127
+
128
+ jcoglan = James Coglan <jcoglan@never-you-mind.com>
129
+ stnick = Santa Claus <nicholas@lapland.com>
130
+
131
+ Then pass an +authors+ option to +svn2git+ pointing to your file:
132
+
133
+ $ svn2git http://svn.example.com/path/to/repo --authors ~/authors.txt
134
+
135
+ Alternatively, you can place the authors file into ~/.svn2git/authors and
136
+ svn2git will load it out of there. This allows you to build up one authors
137
+ file for all your projects and have it loaded for each repository that you
138
+ migrate.
139
+
140
+ Debugging
141
+ ---------
142
+
143
+ If you're having problems with converting your repository and you're not sure why,
144
+ try turning on verbose logging. This will print out more information from the
145
+ underlying git-svn process.
146
+
147
+ You can turn on verbose logging with the '-v' or '--verbose' flags, like so:
148
+
149
+ $ svn2git http://svn.yoursite.com/path/to/repo --verbose
150
+
151
+ FAQ
152
+ ---
153
+
154
+ 1. Why don't the tags show up in the master branch?
155
+
156
+ The tags won't show up in the master branch because the tags are actually
157
+ tied to the commits that were created in svn when the user made the tag.
158
+ Those commits are the first (head) commit of branch in svn that is
159
+ associated with that tag. If you want to see all the branches and tags
160
+ and their relationships in gitk you can run the following: gitk --all
161
+
162
+ For further details please refer to FAQ #2.
163
+
164
+ 2. Why don't you reference the parent of the tag commits instead?
165
+
166
+ In svn you are forced to create what are known in git as annotated tags.
167
+ It just so happens that svn annotated tags allow you to commit change
168
+ sets along with the tagging action. This means that the svn annotated tag
169
+ is a bit more complex then just an annotated tag it is a commit which is
170
+ treated as an annotated tag. Hence, for there to be a true 1-to-1 mapping
171
+ between git and svn we have to transfer over the svn commit which acts as
172
+ an annotated tag and then tag that commit in git using an annotated tag.
173
+
174
+ If we were to reference the parent of this svn tagged commit there could
175
+ potentially be situations where a developer would checkout a tag in git
176
+ and the resulting code base would be different then if they checked out
177
+ that very same tag in the original svn repo. This is only due to the fact
178
+ that the svn tags allow changesets in them, making them not just annotated
179
+ tags.
data/Rakefile ADDED
@@ -0,0 +1,45 @@
1
+ require 'rake'
2
+ require 'rake/gempackagetask'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |spec|
7
+ spec.name = "svn2git"
8
+ spec.summary = "A tool for migrating svn projects to git"
9
+ spec.authors = ["James Coglan", "Kevin Menard", "Akinori MUSHA"]
10
+ spec.homepage = "https://www.negativetwenty.net/redmine/projects/svn2git"
11
+ spec.email = "knu@idaemons.org"
12
+ spec.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
13
+ end
14
+
15
+ rescue LoadError
16
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
17
+ end
18
+
19
+ #
20
+ # spec = Gem::Specification.new do |spec|
21
+ #
22
+ # spec.version = "1.1.0"
23
+ # spec.platform = Gem::Platform::RUBY
24
+ #
25
+ #
26
+ # spec.require_path = "lib"
27
+ # spec.files = FileList["lib/**/*"].to_a
28
+ # spec.autorequire = "lib/svn2git.rb"
29
+ # spec.bindir = "bin"
30
+ # spec.executables = ["svn2git"]
31
+ # spec.default_executable = "svn2git"
32
+ #
33
+ #
34
+ #
35
+ #
36
+ # spec.test_files = FileList["test/**/*"].to_a
37
+ # spec.has_rdoc = true
38
+ # spec.extra_rdoc_files = ["README"]
39
+ # spec.rdoc_options << "--main" << "README" << '--line-numbers' << '--inline-source'
40
+ # end
41
+ #
42
+ # Rake::GemPackageTask.new(spec) do |pkg|
43
+ # pkg.need_tar = true
44
+ # end
45
+ #
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 3
3
+ :patch: 1
4
+ :major: 1
data/bin/svn2git ADDED
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Copyright (c) 2008 James Coglan
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ # of this software and associated documentation files (the "Software"), to deal
7
+ # in the Software without restriction, including without limitation the rights
8
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ # copies of the Software, and to permit persons to whom the Software is
10
+ # furnished to do so, subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in
13
+ # all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ # THE SOFTWARE.
22
+
23
+ require 'svn2git'
24
+
25
+ migration = Svn2Git::Migration.new(ARGV)
26
+ migration.run!
data/lib/svn2git.rb ADDED
@@ -0,0 +1,2 @@
1
+ require File.dirname(__FILE__) + '/svn2git/migration'
2
+
@@ -0,0 +1,247 @@
1
+ require 'optparse'
2
+ require 'pp'
3
+ require 'shellwords'
4
+
5
+ module Svn2Git
6
+ DEFAULT_AUTHORS_FILE = File.expand_path("~/.svn2git/authors")
7
+
8
+ class Migration
9
+
10
+ attr_reader :dir
11
+
12
+ def initialize(args)
13
+ @options = parse(args)
14
+ if @options[:fix]
15
+ show_help_message('Too many arguments') if args.size > 1
16
+ @repo = args.first || '.'
17
+ else
18
+ show_help_message("Missing SVN_URL parameter") if args.empty?
19
+ show_help_message('Too many arguments') if args.size > 2
20
+ @url, @repo = args
21
+ @repo ||= @url.split('/').last || '.'
22
+ end
23
+
24
+ if !File.directory?(@repo)
25
+ begin
26
+ Dir.mkdir(@repo)
27
+ rescue => e
28
+ show_help_message("Cannot create #{@repo}: #{e}")
29
+ end
30
+ end
31
+ Dir.chdir(@repo)
32
+ end
33
+
34
+ def run!
35
+ if @options[:fix]
36
+ puts `pwd`
37
+ if !File.directory?(".git/svn")
38
+ show_help_message("This is not a repository cloned by git-svn")
39
+ end
40
+ log "Fixing the existing repository"
41
+ get_branches
42
+ else
43
+ clone!
44
+ end
45
+ fix_tags
46
+ fix_branches
47
+ fix_trunk
48
+ optimize_repos
49
+ end
50
+
51
+ def parse(args)
52
+ # Set up reasonable defaults for options.
53
+ options = {}
54
+ options[:verbose] = false
55
+ options[:rootistrunk] = false
56
+ options[:fix] = false
57
+ options[:trunk] = 'trunk'
58
+ options[:branches] = 'branches'
59
+ options[:tags] = 'tags'
60
+ options[:exclude] = []
61
+
62
+ if File.exists?(DEFAULT_AUTHORS_FILE)
63
+ options[:authors] = DEFAULT_AUTHORS_FILE
64
+ end
65
+
66
+
67
+ # Parse the command-line arguments.
68
+ @opts = OptionParser.new do |opts|
69
+ opts.banner = 'Usage: svn2git [options] SVN_URL [REPO_DIR] | svn2git [options] --fix [REPO_DIR]'
70
+
71
+ opts.separator ''
72
+ opts.separator 'Specific options:'
73
+
74
+ opts.on('--trunk TRUNK_PATH', 'Subpath to trunk from repository URL (default: trunk)') do |trunk|
75
+ options[:trunk] = trunk
76
+ end
77
+
78
+ opts.on('--branches BRANCHES_PATH', 'Subpath to branches from repository URL (default: branches)') do |branches|
79
+ options[:branches] = branches
80
+ end
81
+ opts.on('--tags TAGS_PATH', 'Subpath to tags from repository URL (default: tags)') do |tags|
82
+ options[:tags] = tags
83
+ end
84
+
85
+ opts.on('--rootistrunk', 'Use this if the root level of the repo is equivalent to the trunk and there are no tags or branches') do
86
+ options[:rootistrunk] = true
87
+ options[:trunk] = nil
88
+ options[:branches] = nil
89
+ options[:tags] = nil
90
+ end
91
+
92
+ opts.on('--notrunk', 'Do not import anything from trunk') do
93
+ options[:trunk] = nil
94
+ end
95
+
96
+ opts.on('--nobranches', 'Do not try to import any branches') do
97
+ options[:branches] = nil
98
+ end
99
+
100
+ opts.on('--notags', 'Do not try to import any tags') do
101
+ options[:tags] = nil
102
+ end
103
+
104
+ opts.on('--authors AUTHORS_FILE', "Path to file containing svn-to-git authors mapping (default: #{DEFAULT_AUTHORS_FILE})") do |authors|
105
+ if authors !~ %r{\A/}
106
+ show_help_message('Authors file path must be absolute.')
107
+ end
108
+ options[:authors] = authors
109
+ end
110
+
111
+ opts.on('--exclude REGEX', 'Specify a Perl regular expression to filter paths when fetching; can be used multiple times') do |regex|
112
+ options[:exclude] << regex
113
+ end
114
+
115
+ opts.on('-v', '--verbose', 'Be verbose in logging -- useful for debugging issues') do
116
+ options[:verbose] = true
117
+ end
118
+
119
+ opts.on('--fix', 'Fix an existing repository') do
120
+ options[:fix] = true
121
+ end
122
+
123
+ opts.separator ""
124
+
125
+ # No argument, shows at tail. This will print an options summary.
126
+ # Try it and see!
127
+ opts.on_tail('-h', '--help', 'Show this message') do
128
+ puts opts
129
+ exit
130
+ end
131
+ end
132
+
133
+ @opts.parse! args
134
+ options
135
+ end
136
+
137
+ private
138
+
139
+ def clone!
140
+ trunk = @options[:trunk]
141
+ branches = @options[:branches]
142
+ tags = @options[:tags]
143
+ rootistrunk = @options[:rootistrunk]
144
+ authors = @options[:authors]
145
+ exclude = @options[:exclude]
146
+
147
+ cmd = %w"git svn init --no-metadata"
148
+
149
+ if rootistrunk
150
+ # Non-standard repository layout. The repository root is effectively 'trunk.'
151
+ cmd << "--trunk=#{@url}"
152
+ else
153
+ # Add each component to the command that was passed as an argument.
154
+ cmd << "--trunk=#{trunk}" unless trunk.nil?
155
+ cmd << "--tags=#{tags}" unless tags.nil?
156
+ cmd << "--branches=#{branches}" unless branches.nil?
157
+
158
+ cmd << @url
159
+ end
160
+
161
+ run_command(cmd)
162
+
163
+ run_command(%w"git config svn.authorsfile" << authors) if authors
164
+
165
+ cmd = %w"git svn fetch"
166
+ unless exclude.empty?
167
+ # Add exclude paths to the command line; some versions of git support
168
+ # this for fetch only, later also for init.
169
+ regex = []
170
+ unless rootistrunk
171
+ regex << "#{Regexp.quote(trunk)}/" unless trunk.nil?
172
+ regex << "#{Regexp.quote(tags)}/[^/]+/" unless tags.nil?
173
+ regex << "#{Regexp.quote(branches)}/[^/]+/" unless branches.nil?
174
+ end
175
+ regex = '^(?:' + regex.join('|') + ')(?:' + exclude.join('|') + ')'
176
+ cmd << "--ignore-paths=#{regex}"
177
+ end
178
+ run_command(cmd)
179
+
180
+ get_branches
181
+ end
182
+
183
+ def get_branches
184
+ @remote = `git branch -r`.split
185
+ @tags = @remote.grep(%r{^tags/})
186
+ end
187
+
188
+ def fix_tags
189
+ @tags.each do |tag|
190
+ id = tag.gsub(%r{^tags/}, '')
191
+ subject = `git log -1 --pretty=format:"%s" #{tag.shellescape}`.chomp
192
+ date = `git log -1 --pretty=format:"%ci" #{tag.shellescape}`.chomp
193
+ run_command("GIT_COMMITTER_DATE=#{date.shellescape} git tag -a -m #{subject.shellescape} #{id.shellescape} #{tag.shellescape}")
194
+ run_command("git branch -d -r #{tag.shellescape}")
195
+ end
196
+ end
197
+
198
+ def fix_branches
199
+ svn_branches = @remote - @tags
200
+ svn_branches.each do |branch|
201
+ next if branch == 'trunk'
202
+ run_command("git checkout #{branch.shellescape}")
203
+ run_command("git checkout -b #{branch.shellescape}")
204
+ end
205
+ end
206
+
207
+ def fix_trunk
208
+ if @remote.include?('trunk')
209
+ run_command("git checkout trunk")
210
+ run_command("git branch -D master")
211
+ run_command("git checkout -f -b master")
212
+ run_command("git branch -d -r trunk")
213
+ end
214
+ end
215
+
216
+ def optimize_repos
217
+ run_command("git gc")
218
+ end
219
+
220
+ def run_command(cmd)
221
+ case cmd
222
+ when Array
223
+ cmd = cmd.shelljoin
224
+ end
225
+
226
+ log "Running command: #{cmd}"
227
+
228
+ IO.popen(cmd) do |stdout|
229
+ stdout.each do |line|
230
+ log line
231
+ end
232
+ end
233
+ end
234
+
235
+ def log(msg)
236
+ puts msg if @options[:verbose]
237
+ end
238
+
239
+ def show_help_message(msg)
240
+ puts "Error starting script: #{msg}\n\n"
241
+ puts @opts.help
242
+ exit
243
+ end
244
+
245
+ end
246
+ end
247
+
data/svn2git.gemspec ADDED
@@ -0,0 +1,45 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{svn2git}
5
+ s.version = "1.3.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["James Coglan", "Kevin Menard", "Akinori MUSHA"]
9
+ s.date = %q{2009-06-18}
10
+ s.default_executable = %q{svn2git}
11
+ s.email = %q{knu@idaemons.org}
12
+ s.executables = ["svn2git"]
13
+ s.extra_rdoc_files = [
14
+ "ChangeLog.markdown",
15
+ "README.markdown"
16
+ ]
17
+ s.files = [
18
+ ".gitignore",
19
+ "ChangeLog.markdown",
20
+ "MIT-LICENSE",
21
+ "README.markdown",
22
+ "Rakefile",
23
+ "VERSION.yml",
24
+ "bin/svn2git",
25
+ "lib/svn2git.rb",
26
+ "lib/svn2git/migration.rb",
27
+ "svn2git.gemspec"
28
+ ]
29
+ s.homepage = %q{https://www.negativetwenty.net/redmine/projects/svn2git}
30
+ s.rdoc_options = ["--charset=UTF-8"]
31
+ s.require_paths = ["lib"]
32
+ s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
33
+ s.rubygems_version = %q{1.3.4}
34
+ s.summary = %q{A tool for migrating svn projects to git}
35
+
36
+ if s.respond_to? :specification_version then
37
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
38
+ s.specification_version = 3
39
+
40
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
41
+ else
42
+ end
43
+ else
44
+ end
45
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: knu-svn2git
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.3.1
5
+ platform: ruby
6
+ authors:
7
+ - James Coglan
8
+ - Kevin Menard
9
+ - Akinori MUSHA
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+
14
+ date: 2009-06-18 00:00:00 -07:00
15
+ default_executable: svn2git
16
+ dependencies: []
17
+
18
+ description:
19
+ email: knu@idaemons.org
20
+ executables:
21
+ - svn2git
22
+ extensions: []
23
+
24
+ extra_rdoc_files:
25
+ - ChangeLog.markdown
26
+ - README.markdown
27
+ files:
28
+ - .gitignore
29
+ - ChangeLog.markdown
30
+ - MIT-LICENSE
31
+ - README.markdown
32
+ - Rakefile
33
+ - VERSION.yml
34
+ - bin/svn2git
35
+ - lib/svn2git.rb
36
+ - lib/svn2git/migration.rb
37
+ - svn2git.gemspec
38
+ has_rdoc: false
39
+ homepage: https://www.negativetwenty.net/redmine/projects/svn2git
40
+ post_install_message:
41
+ rdoc_options:
42
+ - --charset=UTF-8
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.8.7
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.2.0
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: A tool for migrating svn projects to git
64
+ test_files: []
65
+