omnirepo 0.5.0.0.pre → 0.9.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (8) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +2 -1
  3. data/Gemfile +1 -0
  4. data/LICENSE.txt +1 -1
  5. data/README.md +17 -14
  6. data/bin/omnirepo +129 -105
  7. data/omnirepo.gemspec +1 -1
  8. metadata +10 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0de193035ffbc63293ac558163fa9bc6519e0597
4
- data.tar.gz: 5597b8bfa5d0ac31564a58fc2444884ed1c24ff3
3
+ metadata.gz: fc5da9a8b9dbe6fba15de1c4f8ab54319d7b2479
4
+ data.tar.gz: ec5480bd3fc4e18c705a7c4d0f6c2318634c34e0
5
5
  SHA512:
6
- metadata.gz: 98f40124f15c5be9e75017e11446788d1cc1882f396b228218065b1412e3ee57defdac1efb33f5ddd476707729ed923852d6a9fc11a90e4d5ab6d9188b050912
7
- data.tar.gz: ebb92830746b0dbd4dceae34bcd51ef6a57abfcc637be28b349e2371a20f2eb7c66ecfdef4f1a84d3c9de731ad9dd3dafc61d016fa678be5d1ca8e2e634e28fc
6
+ metadata.gz: 0bbc96254859106e2912a2c116e03239ede7f250e08ce2ae140d3bf78f5a815a8438be7000e73d929c1a49af7c06a03d1b91a5cdb738b2051704190b1c336cd2
7
+ data.tar.gz: 0a949382b5b5249a375cbc035eaf00dc047b9111b33beecff35c85744959b01b26aab33aa7f8fc68ea446ca7fe2cf88e641ba2a33113989f1172fa61108be267
data/CHANGES.md CHANGED
@@ -4,4 +4,5 @@ HEAD
4
4
  * Added `.omnirepo` configuration file support. YAML file with these options:
5
5
  * [required, if using .omnirepo] `repositories` array, of individual repositories.
6
6
  * [optional] `submodules` if `remove` will remove submodules from repositories.
7
- * [optional] `merging` can be `skip` and it will just prepare but not merge.
7
+ * [optional] `merging` can be `skip` and it will just prepare but not merge.
8
+ * Primarily supports `GitHub` ... but now also other git servers.
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'colorize'
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011-2014 Donovan Keme
1
+ Copyright (c) 2015 Donovan Keme
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,13 +1,6 @@
1
1
  # omnirepo
2
2
 
3
- Create a new omnibus repository out of a collection of existing GitHub repositories.
4
-
5
-
6
- ## Installation:
7
-
8
- ```
9
- gem install omnirepo
10
- ```
3
+ Create a new omnibus repository out of a collection of existing git repositories.
11
4
 
12
5
  ## What exactly does it do with repositories?!
13
6
 
@@ -17,19 +10,27 @@ gem install omnirepo
17
10
  0. It immediately removes any remote `origin` detected.
18
11
  0. Preserves the git history for each repository.
19
12
  0. (optional) If desired, it removes any submodules present first.
20
- 0. It also renames all branches and tags to be `<repository>/<name>`.
13
+ 0. It also renames all branches and tags to be `standalone/<repository>/<name>`.
21
14
  0. Does garbage collection on the repository being migrated.
22
15
  0. Imports each source repository as a sub-directory of the omnibus repository.
23
16
  0. Does garbage collection on the new omnibus repository.
24
17
  0. **Does not push the new omnibus repository live.**
25
18
 
26
- ### System Requirements:
19
+ ---
20
+
21
+ #### Installation:
22
+
23
+ ```
24
+ gem install omnirepo
25
+ ```
26
+
27
+ #### System Requirements:
27
28
 
28
29
  * Unix-based operating system, with `ruby` and `git` preinstalled.
29
30
  * Prefers `tmpfs` partition located at `/dev/shm` for temporary storage.
30
31
  * Read access to all remote repositories involed.
31
32
 
32
- ### Usage:
33
+ # Use without a configuration file:
33
34
 
34
35
  ```sh
35
36
  omnirepo <username/organization> <destination-omnibus> <source-repository> [...]
@@ -52,6 +53,7 @@ This would be your command:
52
53
  ```sh
53
54
  omnirepo org9 repo0 repoA repoB repoC
54
55
  ```
56
+
55
57
  # Use with a configuration file:
56
58
 
57
59
  For the scenario above, you can create a configuration file as follows:
@@ -65,7 +67,7 @@ repositories:
65
67
 
66
68
  Save that file as `repo0/.omnirepo`
67
69
 
68
- Then you can run this command:
70
+ Then run this command:
69
71
 
70
72
  ```sh
71
73
  omnirepo org9 repo0
@@ -85,6 +87,7 @@ omnirepo org9 repo0
85
87
 
86
88
  ## License
87
89
 
88
- Copyright (c) 2015 Donovan Keme.
90
+ Distributed under the MIT License.
91
+ See [LICENSE.txt](https://github.com/digitalextremist/omnirepo/blob/master/LICENSE.txt) for further details.
89
92
 
90
- Distributed under the MIT License. See [LICENSE.txt](https://github.com/digitalextremist/omnirepo/LICENSE.txt) for further details.
93
+ Copyright (c) 2015 Donovan Keme.
@@ -1,7 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ require 'colorize'
4
+
3
5
  start = Time.now #de Not monotonic, but bah.
4
- puts "Omnibus repository unification tool..."
6
+
7
+ puts LINE = "-----------------------------------------------------------------------------------".cyan.bold.freeze
8
+ puts "[ #{"omnirepo".green.bold} ] Omnibus repository unification tool..."
5
9
 
6
10
  def omnirepo?
7
11
  if File.exists?(File.join("#{Dir.pwd}/#{ARGV[1]}", ".omnirepo"))
@@ -11,8 +15,8 @@ def omnirepo?
11
15
  false
12
16
  end
13
17
 
14
- def urandom_id
15
- `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1`
18
+ def urandom_id(length=24)
19
+ `cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w #{length} | head -n 1`.strip.chomp
16
20
  end
17
21
 
18
22
  def success?(results)
@@ -22,6 +26,12 @@ def success?(results)
22
26
  results.first == true
23
27
  end
24
28
 
29
+ bad_bullet = "*".red.bold
30
+ good_bullet = "*".green.bold
31
+ humble_bullet = "*".cyan
32
+
33
+ instance = urandom_id(5)
34
+
25
35
  begin
26
36
 
27
37
  #de TODO: Validate owner.
@@ -33,17 +43,17 @@ begin
33
43
  OMNIBUS = "#{Dir.pwd}/#{ARGV.shift}"
34
44
  CONFIG = Psych.load_file(File.join(OMNIBUS, ".omnirepo"))
35
45
  unless CONFIG.is_a?(Hash) && CONFIG["repositories"].is_a?(Array)
36
- puts "Onmirepo configuration file invalid."
46
+ puts "#{bad_bullet} Onmirepo configuration file invalid."
37
47
  exit!
38
48
  end
39
49
  REPOSITORIES = CONFIG['repositories'].uniq
40
50
  GIT = CONFIG["git"] if CONFIG["git"].is_a?(String)
41
51
  elsif ARGV.length <= 3
42
52
  puts "Usage: omnirepo <owner org/user> <destination-omnibus-dir> <source-repo1> <source-repo2> [...]"
43
- puts "No owner organization/username supplied." unless ARGV.any?
44
- puts "No destination omnibus directory supplied." unless ARGV.length >= 2
45
- puts "No source repositories supplied." unless ARGV.length == 3
46
- puts "Only one source repository supplied." if ARGV.length == 3
53
+ puts "#{bad_bullet} No owner organization/username supplied." unless ARGV.any?
54
+ puts "#{bad_bullet} No destination omnibus directory supplied." unless ARGV.length >= 2
55
+ puts "#{bad_bullet} No source repositories supplied." unless ARGV.length == 3
56
+ puts "#{bad_bullet} Only one source repository supplied." if ARGV.length == 3
47
57
  exit!
48
58
  else
49
59
  OWNER = ARGV.shift
@@ -54,58 +64,60 @@ begin
54
64
 
55
65
  GIT = "git@github.com".freeze unless defined? GIT
56
66
 
67
+ object_prefix = CONFIG["object_prefix"] || "standalone/"
57
68
  tmp='/dev/shm'
58
69
  tmp='/tmp' unless Dir.exists?(tmp)
59
70
  TMP="#{tmp}/omnirepo.#{urandom_id}".chomp.strip
60
71
 
61
72
  unless Dir.mkdir(TMP)
62
- STDERR.puts "ERROR: Unable to make the temporary working directory: #{TMP}"
73
+ STDERR.puts "#{"ERROR".red.bold}: Unable to make the temporary working directory: #{TMP}"
63
74
  exit!
64
75
  end
65
76
 
66
- puts LINE = "-----------------------------------------------------------------------------------".freeze
77
+ puts LINE
67
78
 
68
79
  unless Dir.exists?(OMNIBUS)
69
80
  puts "Destination omnibus directory does not exist: #{OMNIBUS}"
70
81
  exit!
71
82
  end
72
83
 
73
- puts "Owner organization/user: #{OWNER}"
74
- puts "Destination omnibus: #{OMNIBUS}"
75
- puts "Working directory: #{TMP}"
76
- puts LINE
84
+ puts "\t#{good_bullet} Instance: #{instance.green}"
85
+ puts "\t#{good_bullet} Owner organization/user: #{OWNER.green}"
86
+ puts "\t#{good_bullet} Destination omnibus: #{OMNIBUS.green}"
87
+ puts "\t#{good_bullet} Working directory: #{TMP}"
77
88
 
78
89
  Dir.chdir(OMNIBUS)
79
90
 
80
91
  if `git show 2> /dev/null | grep "commit" | wc -l`.to_i != 1
81
92
  puts LINE
82
- STDERR.puts "ERROR: Destination omnibus directory is not a git repository, or not ready."
93
+ STDERR.puts "#{"ERROR".red.bold}: Destination omnibus directory is not a git repository, or not ready."
83
94
  exit!
84
95
  end
85
96
 
97
+ puts LINE
98
+
86
99
  #de TODO: Further validate omnibus repository.
87
100
 
101
+ branches = {}
88
102
  failures = []
103
+ repos = []
89
104
 
90
105
  REPOSITORIES.each { |repo|
91
-
92
- puts "\n\n\n#{LINE}"
93
- puts "Adding the #{repo} repository..."
94
- puts "Source: #{GIT}:#{OWNER}/#{repo}.git"
95
- puts LINE
106
+
107
+ puts "\n\n#{LINE}\n#{humble_bullet} Adding the #{repo.bold} repository from #{"#{GIT}:#{OWNER}/#{repo}.git".bold}\n#{LINE}"
96
108
 
97
109
  unless Dir.chdir(TMP)
98
- STDERR.puts "ERROR: Failure to change to the temporary working directory."
110
+ STDERR.puts "#{"ERROR".red.bold}: Failure to change to the temporary working directory."
99
111
  exit!
100
112
  end
101
113
 
102
114
  unless system("git clone --mirror '#{GIT}:#{OWNER}/#{repo}.git' #{repo}")
103
- puts "FERROR: ailed to clone: #{repo}"
115
+ puts "F#{"ERROR".red.bold}: ailed to clone: #{repo}"
104
116
  exit!
105
117
  end
106
118
 
107
119
  unless Dir.chdir(repo_bare = File.join(TMP, repo))
108
- STDERR.puts "ERROR: Failed to mirror the #{repo} repository."
120
+ STDERR.puts "#{"ERROR".red.bold}: Failed to mirror the #{repo} repository."
109
121
  exit!
110
122
  end
111
123
 
@@ -113,138 +125,150 @@ begin
113
125
  `git remote rm origin > /dev/null 2> /dev/null`
114
126
  end
115
127
 
116
- branches = []
117
- `git branch | grep -v master | grep -v "refs/"`.split("\n").each { |branch|
118
- begin
119
- result = nil
120
- branches << (branch = branch.strip.chomp)
121
- result = system("git branch -m '#{branch}' '#{repo}/#{branch}")
122
- rescue => ex
123
- STDERR.puts "WARN: Could not migrate the #{branch} branch.\nReason: #{ex}"
124
- ensure
125
- failures << "#{repo} / branch: #{branch}" unless result == true
126
- end
127
- }
128
-
129
- repo_clone = "../#{repo}.clone"
130
- unless cloned = system("git clone . #{repo_clone} > /dev/null")
131
- STDERR.puts "ERROR: Failed to make local clone of #{repo}."
128
+ repo_clone = "#{repo_bare}.clone"
129
+ unless system("git clone -q . #{repo_clone}")
130
+ STDERR.puts "#{"ERROR".red.bold}: Failed to make local clone of #{repo}."
132
131
  failures << "#{repo} / locally clone"
133
132
  next
134
133
  end
135
-
134
+
136
135
  Dir.chdir(repo_clone)
137
136
 
138
137
  begin
139
138
  if CONFIG['submodules'] == 'remove'
140
- if File.exists?(module_config = File.join(repo_bare, repo_clone, ".gitmodules"))
139
+ if File.exists?(module_config = File.join(repo_clone, ".gitmodules"))
141
140
  submodules = File.read(module_config)
142
141
  .split("\n")
143
142
  .map { |line|
144
143
  if line.include?("path =")
145
144
  submodule = line.sub("path =", "").chomp.strip
146
145
  unless submodule.empty?
147
- `git rm -rf ./#{submodule}`
148
- submodule
146
+ submodule
149
147
  end
150
148
  else
151
149
  nil
152
150
  end
153
151
  }.compact
154
- result = []
155
- result << system("git rm -rf .gitmodules")
156
- result << system("git commit -am '[omnirepo] removing submodules: #{submodules.join(', ')}'")
157
- result << system("git push")
158
- failures << "#{repo} / submodules: remove .gitmodules, then commit/push" unless success?(result)
159
- puts "#{LINE}\nRemoved submodules first: #{submodules.join(', ')}"
152
+
153
+ puts "\n\n#{LINE}\n#{humble_bullet} Removing submodules: #{submodules.join(', ')}\n#{LINE}"
154
+ unless system("git filter-branch --tag-name-filter cat --tree-filter 'rm -rf #{submodules.join(' ')} .gitmodules' -- --all")
155
+ failures << "#{repo} / submodules: remove .gitmodules, then commit/push"
156
+ end
160
157
  end
161
158
  end
162
159
  rescue => ex
163
- STDERR.puts "WARN: Could not remove associated submodules.\nReason: #{ex}"
160
+ STDERR.puts "#{bad_bullet} #{"WARN:".red} Could not remove associated submodules.\nReason: #{ex}"
164
161
  failures << "#{repo} / remove submodules"
165
- ensure
166
- Dir.chdir(repo_bare)
167
162
  end
168
163
 
169
- puts "#{LINE}\nPreserving change history and files, but making the repository a sub-directory..."
164
+ puts "\n\n#{LINE}\n#{humble_bullet} Preserving change history and files, but making the repository a sub-directory...\n#{LINE}"
170
165
  print "... please wait: "
171
166
 
172
- unless system("git filter-branch --tree-filter " +
173
- "'mkdir #{repo}; " +
174
- "find -maxdepth 1 " +
175
- "-not -name . " +
176
- "-not -name .git " +
177
- "-not -name #{repo} " +
178
- "| xargs -I{} mv {} #{repo}' " +
179
- "-d #{TMP}/#{urandom_id} -- --all")
180
- failures << "#{repo} / repository tree-filter"
181
- end
167
+ filtering = "git filter-branch -f --tag-name-filter cat --index-filter 'SHA=$(git write-tree); " +
168
+ "rm $GIT_INDEX_FILE && git read-tree --prefix=#{repo}/ $SHA' -- --all"
182
169
 
183
- unless system("git commit -am '[omnirepo] merging the rearranged file structure'")
184
- failures << "#{repo} / merge rearranged file structure"
185
- STDERR.puts "ERROR: Could not merge-in rearranged file structure."
186
- next
187
- end
170
+ failures << "#{repo} / repository tree-filter" unless system(filtering)
188
171
 
189
172
  tags = []
190
173
  `git tag`.split("\n").each { |tag|
191
174
  begin
192
175
  result = []
193
176
  tags << (tag = tag.chomp.strip)
194
- result << system("git tag '#{repo}/#{tag}' '#{tag}' > /dev/null")
195
- result << system("git tag -d '#{tag}' > /dev/null")
177
+ result << system("git tag '#{object_prefix}#{repo}/#{tag}' '#{tag}' > /dev/null")
178
+ result << system("git tag -d '#{tag}'")
196
179
  rescue => ex
197
- STDERR.puts "WARN: Could not migrate the #{tag} tag.\nReason: #{ex}"
180
+ STDERR.puts "#{bad_bullet} #{"WARN:".red} Could not migrate the #{tag} tag.\nReason: #{ex}"
198
181
  result << false
199
182
  ensure
200
183
  failures << "#{repo} / tag: #{tag}" unless success?(result)
201
184
  end
202
185
  }
203
186
 
204
- puts "#{LINE}\nGarbage collection of source repository...\n#{LINE}"
205
- failures << "#{repo} / garbage collection" unless `git gc --aggressive`
206
-
207
- if CONFIG['merging'] == 'skip'
208
- puts "Skipping actual merge into omnibus..."
209
- next
210
- end
211
-
212
- puts "#{LINE}\nMerging the prepared repository into the omnibus...\n#{LINE}"
187
+ Dir.chdir(repo_bare)
188
+ system("git remote add clone #{repo_clone}")
189
+ system("git tag | xargs git tag -d")
190
+ puts "\n\n#{LINE}\n#{humble_bullet} Synchronizing all changes to working repository...\n#{LINE}"
191
+ failures << "synchronize working repos" unless system("git fetch -u --tags clone +refs/heads/*:refs/heads/*")
213
192
 
214
- result = []
215
- Dir.chdir(OMNIBUS)
216
- result << system("git remote add #{repo} #{repo_bare}")
217
- result << system("git fetch #{repo}")
218
- result << system("git merge --no-ff #{repo}/master --commit '[omnirepo] merging in the #{repo} repository.'")
219
- result << system("git remote rm #{repo}")
193
+ branches[repo] = []
194
+ `git branch | grep -v "refs/"`.split("\n").each { |branch|
195
+ begin
196
+ result = nil
197
+ branch = branch.gsub("* ", "").strip.chomp
198
+ b = "#{object_prefix}#{repo}/#{branch}"
199
+ result = system("git branch -m '#{branch}' '#{b}'")
200
+ branches[repo] << b
201
+ rescue => ex
202
+ STDERR.puts "#{bad_bullet} #{"WARN:".red} Could not migrate the #{branch} branch.\nReason: #{ex}"
203
+ ensure
204
+ unless result
205
+ failures << "#{repo} / branch: #{branch}"
206
+ end
207
+ end
208
+ }
220
209
 
221
- unless success?(result)
222
- failures << "#{repo} / merge into omnibus"
223
- next
210
+ unless CONFIG['merging'] == 'skip'
211
+ result = []
212
+ Dir.chdir(OMNIBUS)
213
+ result << system("git remote add #{repo}.#{instance} #{repo_bare}")
214
+ unless success?(result)
215
+ failures << "#{repo} / attach remote to omnibus"
216
+ next
217
+ end
224
218
  end
219
+ repos << repo
220
+ }
225
221
 
226
- if branches.any?
227
- puts "#{LINE}\nThese branches were migrated:\n#{LINE}"
228
- branches.each { |branch| puts "#{branch.rjust(35)} is now #{repo}/#{branch}\n" }
229
- end
230
-
231
- if tags.any?
232
- puts "#{LINE}\nThese tags were migrated:\n#{LINE}"
233
- tags.each { |tag| puts "#{tag.rjust(35)} is now #{repo}/#{tag}\n" }
222
+ unless CONFIG['merging'] == 'skip'
223
+ puts "\n\n#{LINE}\n#{humble_bullet} Merging the prepared standalone repositories into the omnibus...\n#{LINE}"
224
+ if repos.any?
225
+ if system("git fetch --all")
226
+ repos.each { |repo|
227
+
228
+ if branches[repo].any?
229
+ puts "#{good_bullet} Merge branch into master: #{"#{repo}.#{instance}/#{object_prefix}#{repo}/master".cyan}"
230
+ unless system("git merge --no-ff --commit -m '[omnirepo] merging #{object_prefix}#{repo}/master into origin/master' #{repo}.#{instance}/#{object_prefix}#{repo}/master")
231
+ failures << "#{repo} / merging in master branch"
232
+ end
233
+ branches[repo].each { |branch|
234
+ failures << "#{repo} / merging in branch: #{branch}" unless system("git fetch '#{repo}.#{instance}' '#{branch}:#{branch}'")
235
+ }
236
+ else
237
+ failures << "#{repo} / no branches"
238
+ end
239
+
240
+ failures << "#{repo} / removing temporary remote" unless system("git remote rm #{repo}.#{instance}")
241
+
242
+ }
243
+ else
244
+ failures << "fetching all repositories"
245
+ end
246
+ else
247
+ failures << "no repositories to merge in"
234
248
  end
249
+ end
235
250
 
236
- }
251
+ puts "\n\n#{LINE}\n#{humble_bullet} Garbage collection of the omnibus repository...\n#{LINE}"
252
+ failures << "omnibus garbage collection" unless system("git gc --aggressive")
237
253
 
238
254
  puts "\n\n\n"
239
255
  #de TODO: Delete working directory, or at least give config or command line option to do so.
240
- puts "#{LINE}\nThere were the following failures:\n#{LINE}\n#{failures.join("\n")}" if failures.any?
241
- puts "\n\n\n#{LINE}"
242
- puts "Omnibus unification of repositories finished in #{"%0.4f" % (Time.now.to_f - start.to_f)} seconds."
243
- puts "#{LINE}\nRemove your temporary working directory when you are ready:"
256
+
257
+ if failures.any?
258
+ puts "#{LINE}\nThere were the following failures:\n#{LINE}\n\t#{bad_bullet} #{failures.join("\n\t#{bad_bullet} ")}"
259
+ end
260
+
261
+ puts "\n\n\n#{LINE}\n#{humble_bullet} Remove your temporary working directory when you are ready:"
244
262
  puts " #{TMP}"
245
- puts "#{LINE}\nWARNING: Be sure to check over the new omnibus repository before pushing it!"
246
- puts " Each repository has been committed into it."
247
- puts LINE
263
+ puts "#{LINE}\n#{humble_bullet} #{"WARNING:".bold} Be sure to check over the new omnibus repository before pushing it!"
264
+ puts " Each repository has been committed into it.\n\n"
265
+
266
+ if repos.any?
267
+ puts LINE
268
+ puts "The following repositories were combined into one omnibus repository:\n#{LINE}\n\t#{good_bullet} #{repos.join("\n\t#{good_bullet} ")}"
269
+ end
270
+
271
+ puts "#{LINE}\n[ #{"omnirepo".green.bold} ] Omnibus unification of repositories finished in #{"%0.4f" % (Time.now.to_f - start.to_f)} seconds.\n#{LINE}\n\n"
248
272
 
249
273
  rescue => ex
250
274
  puts "Exiting prematurely. Re-run to make an intact omnibus repository."
@@ -11,7 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
12
12
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
13
  gem.name = "omnirepo"
14
- gem.version = '0.5.0.0.pre'
14
+ gem.version = '0.9.pre'
15
15
  gem.licenses = ['MIT']
16
16
  gem.required_ruby_version = ">= 1.9.2"
17
17
  gem.required_rubygems_version = ">= 1.3.6"
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omnirepo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.0.pre
4
+ version: 0.9.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Donovan Keme
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-08 00:00:00.000000000 Z
11
+ date: 2015-10-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Create a new omnibus repository out of collections of existing GitHub
14
- repositories.
13
+ description: Create a new omnibus repository out of collections of existing GitHub repositories.
15
14
  email:
16
15
  - code@extremist.digital
17
16
  executables:
@@ -19,7 +18,7 @@ executables:
19
18
  extensions: []
20
19
  extra_rdoc_files: []
21
20
  files:
22
- - ".gitignore"
21
+ - .gitignore
23
22
  - CHANGES.md
24
23
  - Gemfile
25
24
  - LICENSE.txt
@@ -31,24 +30,24 @@ homepage: https://github.com/digitalextremist/omnirepo
31
30
  licenses:
32
31
  - MIT
33
32
  metadata: {}
34
- post_install_message:
33
+ post_install_message:
35
34
  rdoc_options: []
36
35
  require_paths:
37
36
  - lib
38
37
  required_ruby_version: !ruby/object:Gem::Requirement
39
38
  requirements:
40
- - - ">="
39
+ - - '>='
41
40
  - !ruby/object:Gem::Version
42
41
  version: 1.9.2
43
42
  required_rubygems_version: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - ">="
44
+ - - '>='
46
45
  - !ruby/object:Gem::Version
47
46
  version: 1.3.6
48
47
  requirements: []
49
- rubyforge_project:
48
+ rubyforge_project:
50
49
  rubygems_version: 2.4.8
51
- signing_key:
50
+ signing_key:
52
51
  specification_version: 4
53
52
  summary: Unify GitHub repositories as one repository containing them all as sub-directories.
54
53
  test_files: []