elasticsearch-git 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d48d7fd7bd1dc6d71ce6c24024a746cb75d0b60e
4
- data.tar.gz: e4297f9c88cecef626495998bbb3838ee8829f61
3
+ metadata.gz: 55b0b79e7075658c15389e9fdd70fd50b0eb5af7
4
+ data.tar.gz: 46d05c192da782afe7303f0c85fc398ee13389ea
5
5
  SHA512:
6
- metadata.gz: 0260393250e6bb3fdb4a757b363b5b48d5bd3851bbb923b53170ca88a8b40b7f6c7319a4f0ff6c4b14e4fa8ede81c70b3b6eb343617c624f8a9e961e366d039e
7
- data.tar.gz: be0c4572531338cd2cfa595ce523b9bd16d65bc4139942319862f77fb00215bd85c63bdda4261f6da2b0142a373b7fb862a8f9426f47cff7a5b91481f29670ce
6
+ metadata.gz: 63d24b71254c1dce1e27c2f0a574aa49299eb451fd145524a6bc2e37ea06ab5f16b19cafd361a3d4a9f28149d88491dd0820bb52189cb6dd29d53f5d67ef4b70
7
+ data.tar.gz: 674709e3e2f99fca958a3854aebdebf3e8280126ea896ff07fb76be1176e9710b634f786aeb3a6010a3b361f1523cae07d0d360537d9a5d0697ae910c5914b33
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ support
@@ -0,0 +1,8 @@
1
+ 0.0.5
2
+
3
+ Search by file name on master branch
4
+ Migrate from elasticsearch 0.9.x -> 1.x
5
+
6
+ 0.0.4
7
+
8
+ Stable version
data/Gemfile CHANGED
@@ -5,13 +5,13 @@ gemspec
5
5
 
6
6
  gem 'elasticsearch-model', github: 'elasticsearch/elasticsearch-rails'
7
7
  gem 'elasticsearch-api', git: 'git://github.com/elasticsearch/elasticsearch-ruby.git'
8
- gem 'rugged', git: 'git://github.com/libgit2/rugged.git', branch: 'development', submodules: true
8
+ gem 'rugged'
9
9
  gem 'bundler'
10
10
  gem 'rake'
11
11
  gem 'pry'
12
12
  gem 'charlock_holmes', '~> 0.6.9'
13
13
  gem 'gitlab-linguist', '~> 3.0.0'
14
14
  gem 'minitest'
15
- gem 'activesupport', '> 4.0.0'
16
- gem 'activemodel', '> 4.0.0'
15
+ #gem 'activesupport', '> 4.0.0'
16
+ #gem 'activemodel', '> 4.0.0'
17
17
  gem 'wrong'
data/README.md CHANGED
@@ -1,13 +1,21 @@
1
1
  # Elasticsearch::Git
2
2
 
3
- [Elasticsearch](https://github.com/elasticsearch/elasticsearch-rails/tree/master/elasticsearch-model) integrations for git repositories
3
+ [Elasticsearch](https://github.com/elasticsearch/elasticsearch-rails/tree/master/elasticsearch-model) integrations for git repositories.
4
+
5
+ ## NOTE
6
+
7
+ Now indexing text-like documents mo nore 1 mb size
4
8
 
5
9
  ## Installation
6
10
 
7
11
  Add this line to your application's Gemfile:
8
12
 
9
13
  ``` ruby
10
- gem 'elasticsearch-git'
14
+ gem 'elasticsearch-git', '~> 0.0.5'
15
+
16
+ # or
17
+
18
+ gem 'elasticsearch-git', github: 'zzet/elasticsearch-git', ref: 'last_ref'
11
19
  ```
12
20
 
13
21
  And then execute:
@@ -53,6 +61,8 @@ Repository.search("query")
53
61
 
54
62
  ## Integration with Gitlab
55
63
 
64
+ [Sample (In Undev Gitlab fork)](https://github.com/zzet/gitlabhq/blob/master/app/elastic/repositories_search.rb)
65
+
56
66
  ``` ruby
57
67
  # app/elastic/repositories_search.rb
58
68
  module RepositoriesSearch
@@ -61,6 +71,8 @@ module RepositoriesSearch
61
71
  included do
62
72
  include Elasticsearch::Git::Repository
63
73
 
74
+ self.__elasticsearch__.client = Elasticsearch::Client.new host: Gitlab.config.elasticsearch.host, port: Gitlab.config.elasticsearch.port
75
+
64
76
  def repository_id
65
77
  project.id
66
78
  end
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs << "test"
7
+ t.test_files = FileList['test/lib/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -6,8 +6,8 @@ require 'elasticsearch/git/version'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "elasticsearch-git"
8
8
  spec.version = Elasticsearch::Git::VERSION
9
- spec.authors = ["Andrey Kumanyaev"]
10
- spec.email = ["me@zzet.org"]
9
+ spec.authors = ["Andrey Kumanyaev", "Evgeniy Sokovikov"]
10
+ spec.email = ["me@zzet.org", "skv-headless@yandex.ru"]
11
11
  spec.summary = %q{Elasticsearch integrations for git repositories.}
12
12
  spec.description = %q{Elasticsearch integrations for indexing git repositories.}
13
13
  spec.homepage = "https://github.com/zzet/elasticsearch-git"
@@ -20,9 +20,9 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_runtime_dependency 'elasticsearch-model'
22
22
  spec.add_runtime_dependency 'elasticsearch-api', '> 0.4.0'
23
- spec.add_runtime_dependency 'rugged', '~> 0.19.0'
23
+ spec.add_runtime_dependency 'rugged', '~> 0.21.0'
24
24
  spec.add_runtime_dependency 'charlock_holmes', '~> 0.6.9'
25
25
  spec.add_runtime_dependency 'gitlab-linguist', '> 2.9.0'
26
- spec.add_runtime_dependency 'activemodel', '~> 4.0.0'
27
- spec.add_runtime_dependency 'activesupport', '~> 4.0.0'
26
+ spec.add_runtime_dependency 'activemodel', '~> 4.1.0'
27
+ spec.add_runtime_dependency 'activesupport', '~> 4.1.0'
28
28
  end
@@ -14,7 +14,7 @@ module Elasticsearch
14
14
 
15
15
  blob = repo.lookup(@id)
16
16
 
17
- @mode = '%06o' % raw_blob_hash[:filemode]
17
+ @mode = raw_blob_hash[:mode].to_s(8)
18
18
  @size = blob.size
19
19
  @path = encode!(raw_blob_hash[:path])
20
20
  @name = @path.split('/').last
@@ -29,6 +29,11 @@ module Elasticsearch
29
29
  tokenizer: 'human_tokenizer',
30
30
  filter: %w(lowercase asciifolding human_ngrams)
31
31
  },
32
+ path_analyzer: {
33
+ type: 'custom',
34
+ tokenizer: 'path_tokenizer',
35
+ filter: %w(lowercase asciifolding path_ngrams)
36
+ },
32
37
  sha_analyzer: {
33
38
  type: 'custom',
34
39
  tokenizer: 'sha_tokenizer',
@@ -37,7 +42,7 @@ module Elasticsearch
37
42
  code_analyzer: {
38
43
  type: 'custom',
39
44
  tokenizer: 'standard',
40
- filter: %w(lowercase asciifolding)
45
+ filter: %w(lowercase asciifolding code_stemmer)
41
46
  }
42
47
  },
43
48
  tokenizer: {
@@ -52,7 +57,11 @@ module Elasticsearch
52
57
  min_gram: 1,
53
58
  max_gram: 20,
54
59
  token_chars: %w(letter digit)
55
- }
60
+ },
61
+ path_tokenizer: {
62
+ type: 'path_hierarchy',
63
+ reverse: true
64
+ },
56
65
  },
57
66
  filter: {
58
67
  human_ngrams: {
@@ -64,6 +73,15 @@ module Elasticsearch
64
73
  type: "edgeNGram",
65
74
  min_gram: 8,
66
75
  max_gram: 40
76
+ },
77
+ path_ngrams: {
78
+ type: "edgeNGram",
79
+ min_gram: 3,
80
+ max_gram: 15
81
+ },
82
+ code_stemmer: {
83
+ type: "stemmer",
84
+ name: "minimal_english"
67
85
  }
68
86
  }
69
87
  }
@@ -21,7 +21,7 @@ module Elasticsearch
21
21
  indexes :rid, type: :string, index: :not_analyzed
22
22
  indexes :oid, type: :string, index_options: 'offsets', search_analyzer: :code_analyzer, index_analyzer: :code_analyzer
23
23
  indexes :commit_sha, type: :string, index_options: 'offsets', search_analyzer: :code_analyzer, index_analyzer: :code_analyzer
24
- indexes :path, type: :string, index_options: 'offsets', search_analyzer: :human_analyzer, index_analyzer: :human_analyzer
24
+ indexes :path, type: :string, search_analyzer: :path_analyzer, index_analyzer: :path_analyzer
25
25
  indexes :content, type: :string, index_options: 'offsets', search_analyzer: :code_analyzer, index_analyzer: :code_analyzer
26
26
  indexes :language, type: :string, index: :not_analyzed
27
27
  end
@@ -61,73 +61,24 @@ module Elasticsearch
61
61
  # }
62
62
  #
63
63
  # For search from blobs use type 'blob'
64
- def index_blobs(from_rev: nil, to_rev: nil)
64
+ def index_blobs(from_rev: nil, to_rev: repository_for_indexing.last_commit.oid)
65
+ from, to = parse_revs(from_rev, to_rev)
65
66
 
66
- if to_rev.present?
67
- begin
68
- if to_rev != "0000000000000000000000000000000000000000"
69
- raise unless repository_for_indexing.lookup(to_rev).type == :commit
70
- end
71
- rescue
72
- raise ArgumentError, "'to_rev': '#{to_rev}' is a incorrect commit sha."
73
- end
74
- else
75
- to_rev = repository_for_indexing.head.target
76
- end
77
-
78
- target_sha = to_rev
79
-
80
- if from_rev.present?
81
- begin
82
- if from_rev != "0000000000000000000000000000000000000000"
83
- raise unless repository_for_indexing.lookup(from_rev).type == :commit
84
- end
85
- rescue
86
- raise ArgumentError, "'from_rev': '#{from_rev}' is a incorrect commit sha."
87
- end
88
-
89
- diff = repository_for_indexing.diff(from_rev, to_rev)
90
-
91
- diff.deltas.reverse.each_with_index do |delta, step|
92
- if delta.status == :deleted
93
- b = LiteBlob.new(repository_for_indexing, delta.old_file)
94
- delete_from_index_blob(b)
95
- else
96
- b = LiteBlob.new(repository_for_indexing, delta.new_file)
97
- index_blob(b, target_sha)
98
- end
67
+ diff = repository_for_indexing.diff(from, to)
99
68
 
100
- # Run GC every 100 blobs
101
- ObjectSpace.garbage_collect if step % 100 == 0
102
- end
103
- else
104
- if repository_for_indexing.bare?
105
- recurse_blobs_index(repository_for_indexing.lookup(target_sha).tree, target_sha)
69
+ diff.deltas.reverse.each_with_index do |delta, step|
70
+ if delta.status == :deleted
71
+ next if delta.old_file[:mode].to_s(8) == "160000"
72
+ b = LiteBlob.new(repository_for_indexing, delta.old_file)
73
+ delete_from_index_blob(b)
106
74
  else
107
- repository_for_indexing.index.each_with_index do |blob, step|
108
- b = LiteBlob.new(repository_for_indexing, blob)
109
- index_blob(b, target_sha)
110
-
111
- # Run GC every 100 blobs
112
- ObjectSpace.garbage_collect if step % 100 == 0
113
- end
75
+ next if delta.new_file[:mode].to_s(8) == "160000"
76
+ b = LiteBlob.new(repository_for_indexing, delta.new_file)
77
+ index_blob(b, to)
114
78
  end
115
- end
116
- end
117
79
 
118
- # Indexing bare repository via walking through tree
119
- def recurse_blobs_index(tree, target_sha, path = "")
120
- tree.each_blob do |blob|
121
- blob[:path] = path + blob[:name]
122
- b = LiteBlob.new(repository_for_indexing, blob)
123
- index_blob(b, target_sha)
124
- end
125
-
126
- # Run GC every recurse step
127
- ObjectSpace.garbage_collect
128
-
129
- tree.each_tree do |nested_tree|
130
- recurse_blobs_index(repository_for_indexing.lookup(nested_tree[:oid]), target_sha, "#{path}#{nested_tree[:name]}/")
80
+ # Run GC every 100 blobs
81
+ ObjectSpace.garbage_collect if step % 100 == 0
131
82
  end
132
83
  end
133
84
 
@@ -205,46 +156,23 @@ module Elasticsearch
205
156
  # }
206
157
  #
207
158
  # For search from commits use type 'commit'
208
- def index_commits(from_rev: nil, to_rev: nil)
209
- to_rev = repository_for_indexing.head.target unless to_rev.present?
210
-
211
- if to_rev != "0000000000000000000000000000000000000000"
212
- # If to_rev correct
213
- begin
214
- raise unless repository_for_indexing.lookup(to_rev).type == :commit
215
- rescue
216
- raise ArgumentError, "'to_rev': '#{to_rev}' is a incorrect commit sha."
217
- end
159
+ def index_commits(from_rev: nil, to_rev: repository_for_indexing.last_commit.oid)
160
+ from, to = parse_revs(from_rev, to_rev)
161
+ range = [from, to].reject(&:nil?).join('..')
162
+ out, err, status = Open3.capture3("git log #{range} --format=\"%H\"", chdir: repository_for_indexing.path)
218
163
 
219
- begin
220
- if from_rev.present? && from_rev != "0000000000000000000000000000000000000000"
221
- raise unless repository_for_indexing.lookup(from_rev).type == :commit
222
- end
223
- rescue
224
- raise ArgumentError, "'from_rev': '#{from_rev}' is a incorrect commit sha."
225
- end
164
+ if status.success? && err.blank?
165
+ #TODO use rugged walker!!!
166
+ commit_oids = out.split("\n")
226
167
 
227
- # If pushed new branch no need reindex all repository
228
- # Find merge_base and reindex diff
229
- if from_rev == "0000000000000000000000000000000000000000" && to_rev != repository_for_indexing.head.target
230
- from_rev = repository_for_indexing.merge_base(to_rev, repository_for_indexing.head.target)
231
- end
232
-
233
- walker = Rugged::Walker.new(repository_for_indexing)
234
- walker.push(to_rev)
235
-
236
- if from_rev.present? && from_rev != "0000000000000000000000000000000000000000"
237
- walker.hide(from_rev)
238
- end
239
-
240
- commits = walker.map { |c| c.oid }
241
- walker.reset
242
-
243
- commits.each_with_index do |commit, step|
168
+ commit_oids.each_with_index do |commit, step|
244
169
  index_commit(repository_for_indexing.lookup(commit))
245
170
  ObjectSpace.garbage_collect if step % 100 == 0
246
171
  end
172
+ return commit_oids.count
247
173
  end
174
+
175
+ 0
248
176
  end
249
177
 
250
178
  def index_commit(commit)
@@ -276,6 +204,24 @@ module Elasticsearch
276
204
  end
277
205
  end
278
206
 
207
+ def parse_revs(from_rev, to_rev)
208
+ from = if index_new_branch?(from_rev)
209
+ if to_rev == repository_for_indexing.last_commit.oid
210
+ nil
211
+ else
212
+ merge_base(to_rev)
213
+ end
214
+ else
215
+ from_rev
216
+ end
217
+
218
+ return from, to_rev
219
+ end
220
+
221
+ def index_new_branch?(from)
222
+ from == '0000000000000000000000000000000000000000'
223
+ end
224
+
279
225
  # Representation of repository as indexed json
280
226
  # Attention: It can be very very very huge hash
281
227
  def as_indexed_json(options = {})
@@ -289,7 +235,7 @@ module Elasticsearch
289
235
  def index_blobs_array
290
236
  result = []
291
237
 
292
- target_sha = repository_for_indexing.head.target
238
+ target_sha = repository_for_indexing.head.target.oid
293
239
 
294
240
  if repository_for_indexing.bare?
295
241
  tree = repository_for_indexing.lookup(target_sha).tree
@@ -322,11 +268,11 @@ module Elasticsearch
322
268
  result.push(
323
269
  {
324
270
  type: 'blob',
325
- id: "#{repository_for_indexing.head.target}_#{path}#{blob[:name]}",
271
+ id: "#{repository_for_indexing.head.target.oid}_#{path}#{blob[:name]}",
326
272
  rid: repository_id,
327
273
  oid: b.id,
328
274
  content: b.data,
329
- commit_sha: repository_for_indexing.head.target
275
+ commit_sha: repository_for_indexing.head.target.oid
330
276
  }
331
277
  ) if b.text?
332
278
  end
@@ -376,6 +322,11 @@ module Elasticsearch
376
322
  @repository_id
377
323
  end
378
324
 
325
+ # For Overwrite
326
+ def self.repositories_count
327
+ 10
328
+ end
329
+
379
330
  unless defined?(path_to_repo)
380
331
  def path_to_repo
381
332
  if @path_to_repo.blank?
@@ -416,6 +367,13 @@ module Elasticsearch
416
367
  def logger
417
368
  @logger ||= Logger.new(STDOUT)
418
369
  end
370
+
371
+ private
372
+
373
+ def merge_base(to_rev)
374
+ head_sha = repository_for_indexing.last_commit.oid
375
+ repository_for_indexing.merge_base(to_rev, head_sha)
376
+ end
419
377
  end
420
378
 
421
379
  module ClassMethods
@@ -440,7 +398,8 @@ module Elasticsearch
440
398
  commitRepositoryFaset: {
441
399
  terms: {
442
400
  field: "commit.rid",
443
- all_term: true
401
+ all_terms: true,
402
+ size: repositories_count
444
403
  }
445
404
  }
446
405
  },
@@ -462,6 +421,19 @@ module Elasticsearch
462
421
  }
463
422
  end
464
423
 
424
+ if options[:highlight]
425
+ es_fields = fields.map { |field| field.split('^').first }.inject({}) do |memo, field|
426
+ memo[field.to_sym] = {}
427
+ memo
428
+ end
429
+
430
+ query_hash[:highlight] = {
431
+ pre_tags: ["gitlabelasticsearch→"],
432
+ post_tags: ["←gitlabelasticsearch"],
433
+ fields: es_fields
434
+ }
435
+ end
436
+
465
437
  options[:order] = :default if options[:order].blank?
466
438
  order = case options[:order].to_sym
467
439
  when :recently_indexed
@@ -474,14 +446,10 @@ module Elasticsearch
474
446
 
475
447
  query_hash[:sort] = order.blank? ? [:_score] : [order, :_score]
476
448
 
477
- if options[:highlight]
478
- #query_hash[:highlight] = { fields: options[:in].inject({}) { |a, o| a[o.to_sym] = {} } }
479
- end
480
-
481
449
  res = self.__elasticsearch__.search(query_hash)
482
450
  {
483
451
  results: res.results,
484
- total_count: res.total_count,
452
+ total_count: res.size,
485
453
  repositories: res.response["facets"]["commitRepositoryFaset"]["terms"]
486
454
  }
487
455
  end
@@ -496,7 +464,7 @@ module Elasticsearch
496
464
  match: {
497
465
  'blob.content' => {
498
466
  query: "#{query}",
499
- operator: :or
467
+ operator: :and
500
468
  }
501
469
  }
502
470
  }
@@ -506,13 +474,15 @@ module Elasticsearch
506
474
  languageFacet: {
507
475
  terms: {
508
476
  field: :language,
509
- all_term: true
477
+ all_terms: true,
478
+ size: 20
510
479
  }
511
480
  },
512
481
  blobRepositoryFaset: {
513
482
  terms: {
514
483
  field: :rid,
515
- all_term: true
484
+ all_terms: true,
485
+ size: repositories_count
516
486
  }
517
487
  }
518
488
  },
@@ -552,8 +522,8 @@ module Elasticsearch
552
522
 
553
523
  if options[:highlight]
554
524
  query_hash[:highlight] = {
555
- pre_tags: [""],
556
- post_tags: [""],
525
+ pre_tags: ["gitlabelasticsearch→"],
526
+ post_tags: ["←gitlabelasticsearch"],
557
527
  fields: {
558
528
  "blob.content" => {},
559
529
  "type" => "fvh",
@@ -566,11 +536,31 @@ module Elasticsearch
566
536
 
567
537
  {
568
538
  results: res.results,
569
- total_count: res.total_count,
539
+ total_count: res.size,
570
540
  languages: res.response["facets"]["languageFacet"]["terms"],
571
541
  repositories: res.response["facets"]["blobRepositoryFaset"]["terms"]
572
542
  }
573
543
  end
544
+
545
+ def search_file_names(query, page: 1, per: 20, options: {})
546
+ query_hash = {
547
+ fields: ['blob.path'],
548
+ query: {
549
+ fuzzy: {
550
+ "repository.blob.path" => { value: query }
551
+ },
552
+ },
553
+ filter: {
554
+ term: {
555
+ "repository.blob.rid" => [options[:repository_id]].flatten
556
+ }
557
+ },
558
+ size: per,
559
+ from: per * (page - 1)
560
+ }
561
+
562
+ self.__elasticsearch__.search(query_hash)
563
+ end
574
564
  end
575
565
  end
576
566
  end
@@ -1,5 +1,5 @@
1
1
  module Elasticsearch
2
2
  module Git
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+
4
+ class RepositoryTest < TestCase
5
+ def setup
6
+ @repository = Repository.new
7
+ @repository.repository_for_indexing(TEST_REPO_PATH)
8
+ Repository.__elasticsearch__.create_index! force: true
9
+ end
10
+
11
+ def test_index_commits
12
+ commit_count = @repository.index_commits
13
+ assert { commit_count == RepoInfo::COMMIT_COUNT }
14
+ end
15
+
16
+ def test_index_commits_after_first_push
17
+ commit_count = @repository.index_commits(
18
+ from_rev: "0000000000000000000000000000000000000000",
19
+ to_rev: @repository.repository_for_indexing.head.target.oid)
20
+
21
+ assert { commit_count == RepoInfo::COMMIT_COUNT }
22
+ end
23
+
24
+ #TODO write better assertions
25
+ def test_index_all_blobs_from_head
26
+ blob_count = @repository.index_blobs
27
+ Repository.__elasticsearch__.refresh_index!
28
+
29
+ result = @repository.search('def project_name_regex')
30
+ assert { result[:blobs][:total_count] == 1 }
31
+ end
32
+
33
+ #TODO write better assertions
34
+ def test_index_blobs_after_first_push
35
+ commit_count = @repository.index_blobs(
36
+ from_rev: "0000000000000000000000000000000000000000",
37
+ to_rev: @repository.repository_for_indexing.head.target.oid)
38
+ Repository.__elasticsearch__.refresh_index!
39
+
40
+ result = @repository.search('def project_name_regex')
41
+ assert { result[:blobs][:total_count] == 1 }
42
+ end
43
+ end
@@ -1,6 +1,14 @@
1
1
  require "rubygems"
2
2
  require 'bundler/setup'
3
3
  require 'pry'
4
+ require 'elasticsearch/git'
5
+
6
+ SUPPORT_PATH = File.join(File.expand_path(File.dirname(__FILE__)), '../support')
7
+ TEST_REPO_PATH = File.join(SUPPORT_PATH, 'testme.git')
8
+
9
+ require_relative 'support/seed_helper'
10
+ require_relative 'support/repository'
11
+ require_relative 'support/repo_info'
4
12
 
5
13
  Bundler.require
6
14
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elasticsearch-git
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrey Kumanyaev
8
+ - Evgeniy Sokovikov
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
12
+ date: 2014-09-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: elasticsearch-model
@@ -44,14 +45,14 @@ dependencies:
44
45
  requirements:
45
46
  - - ~>
46
47
  - !ruby/object:Gem::Version
47
- version: 0.19.0
48
+ version: 0.21.0
48
49
  type: :runtime
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - ~>
53
54
  - !ruby/object:Gem::Version
54
- version: 0.19.0
55
+ version: 0.21.0
55
56
  - !ruby/object:Gem::Dependency
56
57
  name: charlock_holmes
57
58
  requirement: !ruby/object:Gem::Requirement
@@ -86,36 +87,38 @@ dependencies:
86
87
  requirements:
87
88
  - - ~>
88
89
  - !ruby/object:Gem::Version
89
- version: 4.0.0
90
+ version: 4.1.0
90
91
  type: :runtime
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - ~>
95
96
  - !ruby/object:Gem::Version
96
- version: 4.0.0
97
+ version: 4.1.0
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: activesupport
99
100
  requirement: !ruby/object:Gem::Requirement
100
101
  requirements:
101
102
  - - ~>
102
103
  - !ruby/object:Gem::Version
103
- version: 4.0.0
104
+ version: 4.1.0
104
105
  type: :runtime
105
106
  prerelease: false
106
107
  version_requirements: !ruby/object:Gem::Requirement
107
108
  requirements:
108
109
  - - ~>
109
110
  - !ruby/object:Gem::Version
110
- version: 4.0.0
111
+ version: 4.1.0
111
112
  description: Elasticsearch integrations for indexing git repositories.
112
113
  email:
113
114
  - me@zzet.org
115
+ - skv-headless@yandex.ru
114
116
  executables: []
115
117
  extensions: []
116
118
  extra_rdoc_files: []
117
119
  files:
118
120
  - .gitignore
121
+ - CHANGELOG
119
122
  - Gemfile
120
123
  - LICENSE.txt
121
124
  - README.md
@@ -127,6 +130,9 @@ files:
127
130
  - lib/elasticsearch/git/model.rb
128
131
  - lib/elasticsearch/git/repository.rb
129
132
  - lib/elasticsearch/git/version.rb
133
+ - test/lib/repository_test.rb
134
+ - test/support/repository.rb
135
+ - test/support/seed_helper.rb
130
136
  - test/test_helper.rb
131
137
  homepage: https://github.com/zzet/elasticsearch-git
132
138
  licenses:
@@ -148,9 +154,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
154
  version: '0'
149
155
  requirements: []
150
156
  rubyforge_project:
151
- rubygems_version: 2.0.3
157
+ rubygems_version: 2.0.14
152
158
  signing_key:
153
159
  specification_version: 4
154
160
  summary: Elasticsearch integrations for git repositories.
155
161
  test_files:
162
+ - test/lib/repository_test.rb
163
+ - test/support/repository.rb
164
+ - test/support/seed_helper.rb
156
165
  - test/test_helper.rb