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.
- checksums.yaml +4 -4
- data/CHANGES.md +2 -1
- data/Gemfile +1 -0
- data/LICENSE.txt +1 -1
- data/README.md +17 -14
- data/bin/omnirepo +129 -105
- data/omnirepo.gemspec +1 -1
- metadata +10 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc5da9a8b9dbe6fba15de1c4f8ab54319d7b2479
|
4
|
+
data.tar.gz: ec5480bd3fc4e18c705a7c4d0f6c2318634c34e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/LICENSE.txt
CHANGED
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
|
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
|
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
|
-
|
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
|
-
|
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
|
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
|
-
|
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
|
-
|
93
|
+
Copyright (c) 2015 Donovan Keme.
|
data/bin/omnirepo
CHANGED
@@ -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
|
-
|
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
|
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
|
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 "
|
74
|
-
puts "
|
75
|
-
puts "
|
76
|
-
puts
|
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 "
|
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
|
-
|
117
|
-
|
118
|
-
|
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(
|
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
|
-
|
148
|
-
submodule
|
146
|
+
submodule
|
149
147
|
end
|
150
148
|
else
|
151
149
|
nil
|
152
150
|
end
|
153
151
|
}.compact
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
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}\
|
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
|
-
|
173
|
-
|
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
|
-
|
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}'
|
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
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
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
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
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
|
222
|
-
|
223
|
-
|
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
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
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
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
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}\
|
246
|
-
puts " Each repository has been committed into it
|
247
|
-
|
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."
|
data/omnirepo.gemspec
CHANGED
@@ -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.
|
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.
|
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-
|
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
|
-
-
|
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: []
|