omnirepo 0.5.0.0.pre → 0.9.pre
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.
- 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: []
|