ghtorrent 0.3.1 → 0.4
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/LICENSE +23 -0
- data/bin/ght-data-retrieval +34 -39
- data/bin/ght-load +0 -33
- data/bin/ght-mirror-events +0 -30
- data/bin/ght-rm-dupl +0 -32
- data/bin/ght-torrent-index +0 -30
- data/lib/ghtorrent.rb +21 -3
- data/lib/ghtorrent/adapters/base_adapter.rb +1 -29
- data/lib/ghtorrent/adapters/mongo_persister.rb +10 -30
- data/lib/ghtorrent/adapters/noop_persister.rb +0 -28
- data/lib/ghtorrent/api_client.rb +1 -28
- data/lib/ghtorrent/call_stack.rb +0 -28
- data/lib/ghtorrent/command.rb +0 -28
- data/lib/ghtorrent/ghtorrent.rb +260 -94
- data/lib/ghtorrent/logging.rb +0 -28
- data/lib/ghtorrent/migrations/005_add_repo_collaborators.rb +23 -0
- data/lib/ghtorrent/migrations/006_add_watchers.rb +23 -0
- data/lib/ghtorrent/persister.rb +0 -28
- data/lib/ghtorrent/retriever.rb +111 -92
- data/lib/ghtorrent/settings.rb +1 -29
- data/lib/ghtorrent/utils.rb +0 -28
- metadata +7 -5
data/lib/ghtorrent/logging.rb
CHANGED
@@ -1,31 +1,3 @@
|
|
1
|
-
# Copyright 2012 Georgios Gousios <gousiosg@gmail.com>
|
2
|
-
#
|
3
|
-
# Redistribution and use in source and binary forms, with or
|
4
|
-
# without modification, are permitted provided that the following
|
5
|
-
# conditions are met:
|
6
|
-
#
|
7
|
-
# 1. Redistributions of source code must retain the above
|
8
|
-
# copyright notice, this list of conditions and the following
|
9
|
-
# disclaimer.
|
10
|
-
#
|
11
|
-
# 2. Redistributions in binary form must reproduce the above
|
12
|
-
# copyright notice, this list of conditions and the following
|
13
|
-
# disclaimer in the documentation and/or other materials
|
14
|
-
# provided with the distribution.
|
15
|
-
#
|
16
|
-
# THIS SOFTWARE IS PROVIDED BY BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
# AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
18
|
-
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19
|
-
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
20
|
-
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23
|
-
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24
|
-
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
|
29
1
|
require 'logger'
|
30
2
|
|
31
3
|
module GHTorrent
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
|
3
|
+
Sequel.migration do
|
4
|
+
up do
|
5
|
+
|
6
|
+
puts("Adding table project members")
|
7
|
+
|
8
|
+
create_table :project_members do
|
9
|
+
foreign_key :repo_id, :projects, :null => false
|
10
|
+
foreign_key :user_id, :users, :null => false
|
11
|
+
DateTime :created_at, :null => false,
|
12
|
+
:default => Sequel::CURRENT_TIMESTAMP
|
13
|
+
String :ext_ref_id, :null => false, :size => 24, :default => "0"
|
14
|
+
primary_key [:repo_id, :user_id]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
down do
|
19
|
+
|
20
|
+
drop_table :project_members
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
|
3
|
+
Sequel.migration do
|
4
|
+
up do
|
5
|
+
|
6
|
+
puts("Adding table watchers")
|
7
|
+
|
8
|
+
create_table :watchers do
|
9
|
+
foreign_key :repo_id, :projects, :null => false
|
10
|
+
foreign_key :user_id, :users, :null => false
|
11
|
+
DateTime :created_at, :null => false,
|
12
|
+
:default => Sequel::CURRENT_TIMESTAMP
|
13
|
+
String :ext_ref_id, :null => false, :size => 24, :default => "0"
|
14
|
+
primary_key [:repo_id, :user_id]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
down do
|
19
|
+
|
20
|
+
drop_table :watchers
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
data/lib/ghtorrent/persister.rb
CHANGED
@@ -1,31 +1,3 @@
|
|
1
|
-
# Copyright 2012 Georgios Gousios <gousiosg@gmail.com>
|
2
|
-
#
|
3
|
-
# Redistribution and use in source and binary forms, with or
|
4
|
-
# without modification, are permitted provided that the following
|
5
|
-
# conditions are met:
|
6
|
-
#
|
7
|
-
# 1. Redistributions of source code must retain the above
|
8
|
-
# copyright notice, this list of conditions and the following
|
9
|
-
# disclaimer.
|
10
|
-
#
|
11
|
-
# 2. Redistributions in binary form must reproduce the above
|
12
|
-
# copyright notice, this list of conditions and the following
|
13
|
-
# disclaimer in the documentation and/or other materials
|
14
|
-
# provided with the distribution.
|
15
|
-
#
|
16
|
-
# THIS SOFTWARE IS PROVIDED BY BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
# AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
18
|
-
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19
|
-
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
20
|
-
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23
|
-
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24
|
-
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
|
29
1
|
module GHTorrent
|
30
2
|
|
31
3
|
#
|
data/lib/ghtorrent/retriever.rb
CHANGED
@@ -1,30 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Redistribution and use in source and binary forms, with or
|
4
|
-
# without modification, are permitted provided that the following
|
5
|
-
# conditions are met:
|
6
|
-
#
|
7
|
-
# 1. Redistributions of source code must retain the above
|
8
|
-
# copyright notice, this list of conditions and the following
|
9
|
-
# disclaimer.
|
10
|
-
#
|
11
|
-
# 2. Redistributions in binary form must reproduce the above
|
12
|
-
# copyright notice, this list of conditions and the following
|
13
|
-
# disclaimer in the documentation and/or other materials
|
14
|
-
# provided with the distribution.
|
15
|
-
#
|
16
|
-
# THIS SOFTWARE IS PROVIDED BY BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
# AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
18
|
-
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19
|
-
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
20
|
-
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23
|
-
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24
|
-
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
1
|
+
require 'uri'
|
28
2
|
|
29
3
|
module GHTorrent
|
30
4
|
module Retriever
|
@@ -60,11 +34,11 @@ module GHTorrent
|
|
60
34
|
end
|
61
35
|
end
|
62
36
|
|
63
|
-
# Try Github
|
37
|
+
# Try Github user search by email. This is optional info, so
|
64
38
|
# it may not return any data.
|
65
|
-
# http://
|
39
|
+
# http://developer.github.com/v3/search/#email-search
|
66
40
|
def retrieve_user_byemail(email, name)
|
67
|
-
url =
|
41
|
+
url = ghurl("legacy/user/email/#{URI.escape(email)}")
|
68
42
|
r = api_request(url)
|
69
43
|
|
70
44
|
return nil if r.empty?
|
@@ -127,15 +101,8 @@ module GHTorrent
|
|
127
101
|
url = ghurl "repos/#{user}/#{repo}/commits?last_sha=#{last_sha}"
|
128
102
|
commits = paged_api_request(url, config(:mirror_commit_pages_new_repo))
|
129
103
|
|
130
|
-
commits.
|
131
|
-
|
132
|
-
|
133
|
-
if commit.empty?
|
134
|
-
acc << retrieve_commit(repo, c['sha'], user)
|
135
|
-
else
|
136
|
-
debug "Retriever: Already got commit #{repo} -> #{c['sha']}"
|
137
|
-
end
|
138
|
-
acc
|
104
|
+
commits.map do |c|
|
105
|
+
retrieve_commit(repo, c['sha'], user)
|
139
106
|
end
|
140
107
|
end
|
141
108
|
|
@@ -197,45 +164,39 @@ module GHTorrent
|
|
197
164
|
@persister.find(:org_members, {'org' => org}).map{|o| retrieve_org(o['login'])}
|
198
165
|
end
|
199
166
|
|
200
|
-
# Retrieve all commit comments for a specific repository
|
201
|
-
def retrieve_repo_comments(repo, user)
|
202
|
-
commit_comments = paged_api_request(ghurl "repos/#{user}/#{repo}/comments")
|
203
|
-
stored_comments = @persister.find(:commit_comments,
|
204
|
-
{'repo' => repo,
|
205
|
-
'user' => user})
|
206
|
-
store_commit_comments(repo, user, commit_comments, stored_comments)
|
207
|
-
end
|
208
|
-
|
209
167
|
# Retrieve all comments for a single commit
|
210
|
-
def retrieve_commit_comments(user, repo, sha
|
211
|
-
# Optimization: if no commits comments are registered for the repo
|
212
|
-
# get them en masse
|
213
|
-
#items = @persister.count(:commit_comments, {'repo' => repo, 'user' => user})
|
214
|
-
#if items == 0 && !reentrer
|
215
|
-
# retrieve_repo_comments(repo, user)
|
216
|
-
# return retrieve_commit_comments(user, repo, sha, true)
|
217
|
-
#end
|
218
|
-
|
168
|
+
def retrieve_commit_comments(user, repo, sha)
|
219
169
|
stored_comments = @persister.find(:commit_comments, {'commit_id' => sha})
|
220
170
|
retrieved_comments = paged_api_request(ghurl "repos/#{user}/#{repo}/commits/#{sha}/comments")
|
221
|
-
store_commit_comments(repo, user, stored_comments, retrieved_comments)
|
222
|
-
@persister.find(:commit_comments, {'commit_id' => sha})
|
223
|
-
end
|
224
171
|
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
172
|
+
retrieved_comments.each{ |x|
|
173
|
+
x['repo'] = repo
|
174
|
+
x['user'] = user
|
175
|
+
x['commit_id'] = sha
|
176
|
+
|
177
|
+
if @persister.find(:commit_comments, {'repo' => repo,
|
178
|
+
'user' => user,
|
179
|
+
'id' => x['id']}).empty?
|
180
|
+
@persister.store(:commit_comments, x)
|
181
|
+
end
|
182
|
+
}
|
183
|
+
@persister.find(:commit_comments, {'commit_id' => sha})#.map{|x| x[@uniq] = x['_id']; x}
|
184
|
+
end
|
185
|
+
|
186
|
+
# Retrieve a single comment
|
187
|
+
def retrieve_commit_comment(user, repo, id)
|
234
188
|
|
235
189
|
comment = @persister.find(:commit_comments, {'repo' => repo,
|
236
|
-
'user' => user,
|
237
|
-
|
190
|
+
'user' => user,
|
191
|
+
'id' => id}).first
|
192
|
+
if comment.nil?
|
238
193
|
r = api_request(ghurl "repos/#{user}/#{repo}/comments/#{id}")
|
194
|
+
|
195
|
+
if r.empty?
|
196
|
+
debug "Retriever: Commit comment #{id} deleted"
|
197
|
+
return
|
198
|
+
end
|
199
|
+
|
239
200
|
r['repo'] = repo
|
240
201
|
r['user'] = user
|
241
202
|
@persister.store(:commit_comments, r)
|
@@ -244,43 +205,101 @@ module GHTorrent
|
|
244
205
|
r
|
245
206
|
else
|
246
207
|
debug "Retriever: Commit comment #{comment['commit_id']} -> #{comment['id']} exists"
|
247
|
-
comment[@uniq] = comment['_id']
|
248
208
|
comment
|
249
209
|
end
|
250
210
|
end
|
251
211
|
|
252
|
-
#
|
253
|
-
def
|
254
|
-
api_request "https://api.github.com/events"
|
255
|
-
end
|
212
|
+
# Retrieve all collaborators for a repository
|
213
|
+
def retrieve_repo_collaborators(user, repo)
|
256
214
|
|
257
|
-
|
215
|
+
url = ghurl "repos/#{user}/#{repo}/collaborators"
|
216
|
+
stored_collaborators = @persister.find(:repo_collaborators,
|
217
|
+
{'repo' => repo, 'owner' => user})
|
258
218
|
|
259
|
-
|
260
|
-
|
219
|
+
collaborators = paged_api_request url
|
220
|
+
collaborators.each do |x|
|
221
|
+
x['repo'] = repo
|
222
|
+
x['owner'] = user
|
223
|
+
|
224
|
+
exists = !stored_collaborators.find { |f|
|
225
|
+
f['login'] == x['login']
|
226
|
+
}.nil?
|
227
|
+
|
228
|
+
if not exists
|
229
|
+
@persister.store(:repo_collaborators, x)
|
230
|
+
info "Retriever: Added collaborator #{repo} -> #{x['login']}"
|
231
|
+
else
|
232
|
+
debug "Retriever: Collaborator #{repo} -> #{x['login']} exists"
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
@persister.find(:repo_collaborators, {'repo' => repo, 'owner' => user})
|
261
237
|
end
|
262
238
|
|
263
|
-
|
264
|
-
|
239
|
+
# Retrieve a single repository collaborator
|
240
|
+
def retrieve_repo_collaborator(user, repo, new_member)
|
241
|
+
|
242
|
+
collaborator = @persister.find(:repo_collaborators,
|
243
|
+
{'repo' => repo,
|
244
|
+
'owner' => user,
|
245
|
+
'login' => new_member})
|
246
|
+
|
247
|
+
if collaborator.empty?
|
248
|
+
retrieve_repo_collaborators(user, repo).find{|x| x['login'] == new_member}
|
249
|
+
else
|
250
|
+
collaborator.first
|
251
|
+
end
|
265
252
|
end
|
266
253
|
|
267
|
-
|
268
|
-
|
254
|
+
# Retrieve all watchers for a repository
|
255
|
+
def retrieve_watchers(user, repo)
|
256
|
+
stored_watchers = @persister.find(:watchers,
|
257
|
+
{'repo' => repo, 'owner' => user})
|
269
258
|
|
270
|
-
|
271
|
-
|
272
|
-
|
259
|
+
watchers = paged_api_request(ghurl "repos/#{user}/#{repo}/watchers")
|
260
|
+
watchers.each do |x|
|
261
|
+
x['repo'] = repo
|
262
|
+
x['owner'] = user
|
273
263
|
|
274
|
-
|
275
|
-
|
276
|
-
|
264
|
+
exists = !stored_watchers.find { |f|
|
265
|
+
f['login'] == x['login']
|
266
|
+
}.nil?
|
277
267
|
|
278
|
-
|
279
|
-
|
268
|
+
if not exists
|
269
|
+
@persister.store(:watchers, x)
|
270
|
+
info "Retriever: Added watcher #{repo} -> #{x['login']}"
|
280
271
|
else
|
281
|
-
debug "Retriever:
|
272
|
+
debug "Retriever: Watcher #{repo} -> #{x['login']} exists"
|
282
273
|
end
|
283
274
|
end
|
275
|
+
|
276
|
+
@persister.find(:watchers, {'repo' => repo, 'owner' => user})
|
277
|
+
end
|
278
|
+
|
279
|
+
# Retrieve a single watcher for a repositry
|
280
|
+
def retrieve_watcher(user, repo, watcher)
|
281
|
+
stored_watcher = @persister.find(:watchers,
|
282
|
+
{'repo' => repo,
|
283
|
+
'owner' => user,
|
284
|
+
'login' => watcher})
|
285
|
+
|
286
|
+
if stored_watcher.empty?
|
287
|
+
retrieve_watchers(user, repo).find{|x| x['login'] == watcher}
|
288
|
+
else
|
289
|
+
stored_watcher.first
|
290
|
+
end
|
291
|
+
end
|
292
|
+
|
293
|
+
# Get current Github events
|
294
|
+
def get_events
|
295
|
+
api_request "https://api.github.com/events"
|
284
296
|
end
|
297
|
+
|
298
|
+
private
|
299
|
+
|
300
|
+
def ghurl(path)
|
301
|
+
config(:mirror_urlbase) + path
|
302
|
+
end
|
303
|
+
|
285
304
|
end
|
286
305
|
end
|
data/lib/ghtorrent/settings.rb
CHANGED
@@ -1,31 +1,3 @@
|
|
1
|
-
# Copyright 2012 Georgios Gousios <gousiosg@gmail.com>
|
2
|
-
#
|
3
|
-
# Redistribution and use in source and binary forms, with or
|
4
|
-
# without modification, are permitted provided that the following
|
5
|
-
# conditions are met:
|
6
|
-
#
|
7
|
-
# 1. Redistributions of source code must retain the above
|
8
|
-
# copyright notice, this list of conditions and the following
|
9
|
-
# disclaimer.
|
10
|
-
#
|
11
|
-
# 2. Redistributions in binary form must reproduce the above
|
12
|
-
# copyright notice, this list of conditions and the following
|
13
|
-
# disclaimer in the documentation and/or other materials
|
14
|
-
# provided with the distribution.
|
15
|
-
#
|
16
|
-
# THIS SOFTWARE IS PROVIDED BY BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
# AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
18
|
-
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19
|
-
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
20
|
-
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23
|
-
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24
|
-
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
|
29
1
|
require 'yaml'
|
30
2
|
|
31
3
|
module GHTorrent
|
@@ -49,7 +21,7 @@ module GHTorrent
|
|
49
21
|
:mirror_persister => "mirror.persister",
|
50
22
|
:mirror_commit_pages_new_repo => "mirror.commit_pages_new_repo",
|
51
23
|
|
52
|
-
:uniq_id => "uniq_id"
|
24
|
+
:uniq_id => "mirror.uniq_id"
|
53
25
|
}
|
54
26
|
|
55
27
|
def config(key)
|
data/lib/ghtorrent/utils.rb
CHANGED
@@ -1,31 +1,3 @@
|
|
1
|
-
# Copyright 2012 Georgios Gousios <gousiosg@gmail.com>
|
2
|
-
#
|
3
|
-
# Redistribution and use in source and binary forms, with or
|
4
|
-
# without modification, are permitted provided that the following
|
5
|
-
# conditions are met:
|
6
|
-
#
|
7
|
-
# 1. Redistributions of source code must retain the above
|
8
|
-
# copyright notice, this list of conditions and the following
|
9
|
-
# disclaimer.
|
10
|
-
#
|
11
|
-
# 2. Redistributions in binary form must reproduce the above
|
12
|
-
# copyright notice, this list of conditions and the following
|
13
|
-
# disclaimer in the documentation and/or other materials
|
14
|
-
# provided with the distribution.
|
15
|
-
#
|
16
|
-
# THIS SOFTWARE IS PROVIDED BY BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
17
|
-
# AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
18
|
-
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19
|
-
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
20
|
-
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21
|
-
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22
|
-
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23
|
-
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24
|
-
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25
|
-
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26
|
-
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27
|
-
# POSSIBILITY OF SUCH DAMAGE.
|
28
|
-
|
29
1
|
module GHTorrent
|
30
2
|
module Utils
|
31
3
|
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ghtorrent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
|
10
|
-
version: 0.3.1
|
8
|
+
- 4
|
9
|
+
version: "0.4"
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Georgios Gousios
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2012-
|
18
|
+
date: 2012-07-11 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: amqp
|
@@ -164,6 +163,8 @@ files:
|
|
164
163
|
- lib/ghtorrent/migrations/002_add_external_ref_ids.rb
|
165
164
|
- lib/ghtorrent/migrations/003_add_orgs.rb
|
166
165
|
- lib/ghtorrent/migrations/004_add_commit_comments.rb
|
166
|
+
- lib/ghtorrent/migrations/005_add_repo_collaborators.rb
|
167
|
+
- lib/ghtorrent/migrations/006_add_watchers.rb
|
167
168
|
- lib/ghtorrent/persister.rb
|
168
169
|
- lib/ghtorrent/retriever.rb
|
169
170
|
- lib/ghtorrent/settings.rb
|
@@ -175,6 +176,7 @@ files:
|
|
175
176
|
- bin/ght-periodic-dump
|
176
177
|
- bin/ght-rm-dupl
|
177
178
|
- bin/ght-torrent-index
|
179
|
+
- LICENSE
|
178
180
|
- Rakefile
|
179
181
|
- README.md
|
180
182
|
- test/callstack_test.rb
|