gitlab-elasticsearch-git 0.0.17 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +3 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +16 -16
- data/lib/elasticsearch/git/repository.rb +34 -46
- data/lib/elasticsearch/git/version.rb +1 -1
- data/spec/support/test_repository.rb +6 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2f2e02dd07d4a8be46948d3bce7bb400fc85b01
|
4
|
+
data.tar.gz: 7351959ff7c27ac48360f9bca26ab7e2727763ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 492e50d3b67c8b2a3adb03c4cd5a62ece0bda3a9d6199cef64b02e678e22414b3943f80581bb7141f002a7230db1c767c039025e61bc056f018f54a78b3027cf
|
7
|
+
data.tar.gz: 17086678943cdb815521fa196cb59a1f3d0926ae40b1e209ade66d8f19b75c1ccb4f12f7638a7da5c143b34ab6bb44fb76dd5183bc33d7c7964b826c6ca809f9
|
data/CHANGELOG
CHANGED
data/Gemfile
CHANGED
@@ -3,8 +3,8 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in elasticsearch-git.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
gem 'elasticsearch-model'
|
7
|
-
gem 'elasticsearch-api'
|
6
|
+
gem 'elasticsearch-model', '~> 0.1.9'
|
7
|
+
gem 'elasticsearch-api', '~> 1.1.0'
|
8
8
|
gem 'rugged', '~> 0.24'
|
9
9
|
gem 'rake'
|
10
10
|
gem 'pry'
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
gitlab-elasticsearch-git (0.0
|
4
|
+
gitlab-elasticsearch-git (1.0.0)
|
5
5
|
activemodel (~> 4.2)
|
6
6
|
activesupport (~> 4.2)
|
7
7
|
charlock_holmes (~> 0.7)
|
@@ -13,10 +13,10 @@ PATH
|
|
13
13
|
GEM
|
14
14
|
remote: https://rubygems.org/
|
15
15
|
specs:
|
16
|
-
activemodel (4.2.
|
17
|
-
activesupport (= 4.2.
|
16
|
+
activemodel (4.2.7.1)
|
17
|
+
activesupport (= 4.2.7.1)
|
18
18
|
builder (~> 3.1)
|
19
|
-
activesupport (4.2.
|
19
|
+
activesupport (4.2.7.1)
|
20
20
|
i18n (~> 0.7)
|
21
21
|
json (~> 1.7, >= 1.7.7)
|
22
22
|
minitest (~> 5.1)
|
@@ -26,16 +26,16 @@ GEM
|
|
26
26
|
charlock_holmes (0.7.3)
|
27
27
|
coderay (1.1.0)
|
28
28
|
diff-lcs (1.2.5)
|
29
|
-
elasticsearch (1.0
|
30
|
-
elasticsearch-api (= 1.0
|
31
|
-
elasticsearch-transport (= 1.0
|
32
|
-
elasticsearch-api (1.0
|
29
|
+
elasticsearch (1.1.0)
|
30
|
+
elasticsearch-api (= 1.1.0)
|
31
|
+
elasticsearch-transport (= 1.1.0)
|
32
|
+
elasticsearch-api (1.1.0)
|
33
33
|
multi_json
|
34
|
-
elasticsearch-model (0.1.
|
34
|
+
elasticsearch-model (0.1.9)
|
35
35
|
activesupport (> 3)
|
36
36
|
elasticsearch (> 0.4)
|
37
37
|
hashie
|
38
|
-
elasticsearch-transport (1.0
|
38
|
+
elasticsearch-transport (1.1.0)
|
39
39
|
faraday
|
40
40
|
multi_json
|
41
41
|
escape_utils (1.1.0)
|
@@ -46,15 +46,15 @@ GEM
|
|
46
46
|
escape_utils (~> 1.1.0)
|
47
47
|
mime-types (>= 1.19)
|
48
48
|
rugged (>= 0.23.0b)
|
49
|
-
hashie (3.4.
|
49
|
+
hashie (3.4.4)
|
50
50
|
i18n (0.7.0)
|
51
51
|
json (1.8.3)
|
52
52
|
method_source (0.8.2)
|
53
53
|
mime-types (3.0)
|
54
54
|
mime-types-data (~> 3.2015)
|
55
55
|
mime-types-data (3.2015.1120)
|
56
|
-
minitest (5.
|
57
|
-
multi_json (1.
|
56
|
+
minitest (5.9.0)
|
57
|
+
multi_json (1.12.1)
|
58
58
|
multipart-post (2.0.0)
|
59
59
|
pry (0.10.3)
|
60
60
|
coderay (~> 1.1.0)
|
@@ -85,8 +85,8 @@ PLATFORMS
|
|
85
85
|
|
86
86
|
DEPENDENCIES
|
87
87
|
charlock_holmes (~> 0.7.3)
|
88
|
-
elasticsearch-api
|
89
|
-
elasticsearch-model
|
88
|
+
elasticsearch-api (~> 1.1.0)
|
89
|
+
elasticsearch-model (~> 0.1.9)
|
90
90
|
github-linguist (~> 4.7.0)
|
91
91
|
gitlab-elasticsearch-git!
|
92
92
|
pry
|
@@ -95,4 +95,4 @@ DEPENDENCIES
|
|
95
95
|
rugged (~> 0.24)
|
96
96
|
|
97
97
|
BUNDLED WITH
|
98
|
-
1.
|
98
|
+
1.12.5
|
@@ -21,7 +21,7 @@ module Elasticsearch
|
|
21
21
|
include Elasticsearch::Git::Model
|
22
22
|
include Elasticsearch::Git::EncoderHelper
|
23
23
|
|
24
|
-
mapping _timestamp: { enabled: true } do
|
24
|
+
mapping _timestamp: { enabled: true }, _parent: { type: 'project' } do
|
25
25
|
indexes :blob do
|
26
26
|
indexes :id, type: :string,
|
27
27
|
index_options: 'offsets',
|
@@ -119,18 +119,26 @@ module Elasticsearch
|
|
119
119
|
client_for_indexing.bulk body: bulk_operations
|
120
120
|
end
|
121
121
|
|
122
|
-
|
123
122
|
def delete_blob(blob)
|
124
123
|
return unless blob.text?
|
125
|
-
{
|
124
|
+
{
|
125
|
+
delete: {
|
126
|
+
_index: "#{self.class.index_name}",
|
127
|
+
_type: self.class.name.underscore,
|
128
|
+
_id: "#{repository_id}_#{blob.path}",
|
129
|
+
_parent: project_id
|
130
|
+
}
|
131
|
+
}
|
126
132
|
end
|
127
133
|
|
128
|
-
|
129
134
|
def index_blob(blob, target_sha)
|
130
135
|
return unless can_index_blob?(blob)
|
131
136
|
{
|
132
137
|
index: {
|
133
|
-
_index: "#{self.class.index_name}",
|
138
|
+
_index: "#{self.class.index_name}",
|
139
|
+
_type: self.class.name.underscore,
|
140
|
+
_id: "#{repository_id}_#{blob.path}",
|
141
|
+
_parent: project_id,
|
134
142
|
data: {
|
135
143
|
blob: {
|
136
144
|
type: "blob",
|
@@ -206,7 +214,10 @@ module Elasticsearch
|
|
206
214
|
def index_commit(commit)
|
207
215
|
{
|
208
216
|
index: {
|
209
|
-
_index: "#{self.class.index_name}",
|
217
|
+
_index: "#{self.class.index_name}",
|
218
|
+
_type: self.class.name.underscore,
|
219
|
+
_id: "#{repository_id}_#{commit.oid}",
|
220
|
+
_parent: project_id,
|
210
221
|
data: {
|
211
222
|
commit: {
|
212
223
|
type: "commit",
|
@@ -340,7 +351,7 @@ module Elasticsearch
|
|
340
351
|
end
|
341
352
|
|
342
353
|
# Repository id used for identity data from different repositories
|
343
|
-
# Update this value if
|
354
|
+
# Update this value if needed
|
344
355
|
def set_repository_id(id = nil)
|
345
356
|
@repository_id = id || path_to_repo
|
346
357
|
end
|
@@ -376,11 +387,6 @@ module Elasticsearch
|
|
376
387
|
end
|
377
388
|
|
378
389
|
module ClassMethods
|
379
|
-
# For Overwrite
|
380
|
-
def repositories_count
|
381
|
-
10
|
382
|
-
end
|
383
|
-
|
384
390
|
def search(query, type: :all, page: 1, per: 20, options: {})
|
385
391
|
results = { blobs: [], commits: []}
|
386
392
|
|
@@ -408,21 +414,12 @@ module Elasticsearch
|
|
408
414
|
must: [{
|
409
415
|
multi_match: {
|
410
416
|
fields: fields,
|
411
|
-
query:
|
417
|
+
query: query,
|
412
418
|
operator: :or
|
413
419
|
}
|
414
420
|
}]
|
415
421
|
}
|
416
422
|
},
|
417
|
-
aggs: {
|
418
|
-
commitRepositoryFaset: {
|
419
|
-
terms: {
|
420
|
-
field: "commit.rid",
|
421
|
-
all_terms: true,
|
422
|
-
size: repositories_count
|
423
|
-
}
|
424
|
-
}
|
425
|
-
},
|
426
423
|
size: per,
|
427
424
|
from: per * (page - 1)
|
428
425
|
}
|
@@ -440,6 +437,11 @@ module Elasticsearch
|
|
440
437
|
}
|
441
438
|
end
|
442
439
|
|
440
|
+
if options[:additional_filter]
|
441
|
+
query_hash[:query][:bool][:filter] ||= []
|
442
|
+
query_hash[:query][:bool][:filter] << options[:additional_filter]
|
443
|
+
end
|
444
|
+
|
443
445
|
if options[:highlight]
|
444
446
|
es_fields = fields.map { |field| field.split('^').first }.inject({}) do |memo, field|
|
445
447
|
memo[field.to_sym] = {}
|
@@ -447,9 +449,9 @@ module Elasticsearch
|
|
447
449
|
end
|
448
450
|
|
449
451
|
query_hash[:highlight] = {
|
450
|
-
|
451
|
-
|
452
|
-
|
452
|
+
pre_tags: ["gitlabelasticsearch→"],
|
453
|
+
post_tags: ["←gitlabelasticsearch"],
|
454
|
+
fields: es_fields
|
453
455
|
}
|
454
456
|
end
|
455
457
|
|
@@ -469,8 +471,7 @@ module Elasticsearch
|
|
469
471
|
res = self.__elasticsearch__.search(query_hash)
|
470
472
|
{
|
471
473
|
results: res.results,
|
472
|
-
total_count: res.size
|
473
|
-
repositories: res.response["aggregations"]["commitRepositoryFaset"]["buckets"]
|
474
|
+
total_count: res.size
|
474
475
|
}
|
475
476
|
end
|
476
477
|
|
@@ -489,22 +490,6 @@ module Elasticsearch
|
|
489
490
|
}
|
490
491
|
}
|
491
492
|
},
|
492
|
-
aggs: {
|
493
|
-
languageFacet: {
|
494
|
-
terms: {
|
495
|
-
field: :language,
|
496
|
-
all_terms: true,
|
497
|
-
size: 20
|
498
|
-
}
|
499
|
-
},
|
500
|
-
blobRepositoryFaset: {
|
501
|
-
terms: {
|
502
|
-
field: :rid,
|
503
|
-
all_terms: true,
|
504
|
-
size: repositories_count
|
505
|
-
}
|
506
|
-
}
|
507
|
-
},
|
508
493
|
size: per,
|
509
494
|
from: per * (page - 1)
|
510
495
|
}
|
@@ -519,6 +504,11 @@ module Elasticsearch
|
|
519
504
|
}
|
520
505
|
end
|
521
506
|
|
507
|
+
if options[:additional_filter]
|
508
|
+
query_hash[:query][:bool][:filter] ||= []
|
509
|
+
query_hash[:query][:bool][:filter] << options[:additional_filter]
|
510
|
+
end
|
511
|
+
|
522
512
|
if options[:language]
|
523
513
|
query_hash[:query][:bool][:filter] << {
|
524
514
|
terms: {
|
@@ -557,9 +547,7 @@ module Elasticsearch
|
|
557
547
|
|
558
548
|
{
|
559
549
|
results: res.results,
|
560
|
-
total_count: res.size
|
561
|
-
languages: res.response["aggregations"]["languageFacet"]["buckets"],
|
562
|
-
repositories: res.response["aggregations"]["blobRepositoryFaset"]["buckets"]
|
550
|
+
total_count: res.size
|
563
551
|
}
|
564
552
|
end
|
565
553
|
|
@@ -7,8 +7,9 @@ class TestRepository
|
|
7
7
|
|
8
8
|
self.__elasticsearch__.client = CLIENT
|
9
9
|
|
10
|
-
def initialize(id = 'test_1')
|
10
|
+
def initialize(id = 'test_1', project_id = 1)
|
11
11
|
@repo_id = id
|
12
|
+
@project_id = 1
|
12
13
|
end
|
13
14
|
|
14
15
|
def client_for_indexing
|
@@ -19,6 +20,10 @@ class TestRepository
|
|
19
20
|
@repo_id
|
20
21
|
end
|
21
22
|
|
23
|
+
def project_id
|
24
|
+
@project_id
|
25
|
+
end
|
26
|
+
|
22
27
|
def path_to_repo
|
23
28
|
TEST_REPO_PATH
|
24
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-elasticsearch-git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrey Kumanyaev
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-08
|
13
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: elasticsearch-model
|
@@ -159,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
159
|
version: '0'
|
160
160
|
requirements: []
|
161
161
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.
|
162
|
+
rubygems_version: 2.5.1
|
163
163
|
signing_key:
|
164
164
|
specification_version: 4
|
165
165
|
summary: Elasticsearch integrations for git repositories.
|