rjgit 5.9.0.0 → 5.13.0.0

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
  SHA256:
3
- metadata.gz: 5b28d35d4c9ea97c5a4ea28b0a62b7374daea6a7a0fd906cfbefbcb986ac37aa
4
- data.tar.gz: dceb29a1d1e1d20f93a43c71b08ba02d7f23d1f2c8dd92c43a8bf810594dba19
3
+ metadata.gz: 7319128f1ec9832994b9002833bfceee1f3615895443fd0886474cacf5d7e606
4
+ data.tar.gz: 4fe75b98ffee4921a9db359ca7eef6305e6105317efe1a59a5fbc4d20eade6ff
5
5
  SHA512:
6
- metadata.gz: e3ab922915d8f98e59757c853277f96273871c867d3f7eda3e2bec4f3d65fb6ec142fdab92fd9df60df3a7ffb6c010482d98ad2c9ac0b3b511a14cd469a5e2fc
7
- data.tar.gz: c1ac638be7e459f8ab20364ec89c75e6da40d9fa81cd184c7c28f3aaa898c8953b2c62f7f63b52294d38f488ee932944ac6dd707ae74474c0e5e1d83bfa639c3
6
+ metadata.gz: 14e07bf9c40e403177afc91992954a03dd04970f74dc166b98481e7e262df3075cf7baccf1d200e9fb70894e5c61734861fa97df8089bc5f15e0f0e5560c8177
7
+ data.tar.gz: 23d69a1e41afee50825921228308e16afde7c71080029a3dff57323554b478b23d4957e3ffae8f51b5e2959063801a4647920b5bf1ab145e8a3d8670ad5b2ecb
data/README.md CHANGED
@@ -3,7 +3,7 @@ RJGit
3
3
 
4
4
  ### A JRuby wrapper around the [JGit library](https://github.com/eclipse/jgit) for manipulating Git repositories, the Ruby way.
5
5
 
6
- [![Build Status](https://travis-ci.org/repotag/rjgit.png)](https://travis-ci.org/repotag/rjgit)
6
+ [![Ruby Build](https://github.com/repotag/rjgit/actions/workflows/test.yaml/badge.svg)](https://github.com/repotag/rjgit/actions/workflows/test.yaml)
7
7
  [![Coverage Status](https://coveralls.io/repos/repotag/rjgit/badge.png?branch=master)](https://coveralls.io/r/repotag/rjgit)
8
8
  [![Gem Version](https://badge.fury.io/rb/rjgit.png)](http://badge.fury.io/rb/rjgit)
9
9
  [![Cutting Edge Dependency Status](https://dometto-cuttingedge.herokuapp.com/github/repotag/rjgit/svg 'Cutting Edge Dependency Status')](https://dometto-cuttingedge.herokuapp.com/github/repotag/rjgit/info)
data/lib/blob.rb CHANGED
@@ -36,7 +36,7 @@ module RJGit
36
36
  # The binary contents of this blob.
37
37
  # Returns String
38
38
  def data
39
- @data ||= RJGit::Porcelain.cat_file(@jrepo, @jblob)
39
+ @data ||= RJGit::Porcelain.cat_file(@jrepo, self)
40
40
  end
41
41
 
42
42
  def is_symlink?
data/lib/git.rb CHANGED
@@ -185,6 +185,7 @@ module RJGit
185
185
  if (SSH_TRANSPORTS.include? transport_protocol.to_s) || (options[:transport_protocol] == :ssh) || options[:private_key_file]
186
186
  command.set_transport_config_callback(RJGitSSHConfigCallback.new(options))
187
187
  elsif (HTTP_TRANSPORTS.include? transport_protocol.to_s) || options[:username]
188
+ options[:password] = '' unless options[:password]
188
189
  command.set_credentials_provider(UsernamePasswordCredentialsProvider.new(options[:username], options[:password]))
189
190
  end
190
191
  end
Binary file
data/lib/rjgit.rb CHANGED
@@ -56,10 +56,11 @@ module RJGit
56
56
 
57
57
  # http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg00558.html
58
58
  def self.cat_file(repository, blob)
59
+ mode = blob.mode if blob.respond_to?(:mode)
59
60
  jrepo = RJGit.repository_type(repository)
60
61
  jblob = RJGit.blob_type(blob)
61
62
  # Try to resolve symlinks; return nil otherwise
62
- mode = RJGit.get_file_mode(jrepo, jblob)
63
+ mode ||= RJGit.get_file_mode(jrepo, jblob)
63
64
  if mode == SYMLINK_TYPE
64
65
  symlink_source = jrepo.open(jblob.id).get_bytes.to_a.pack('c*').force_encoding('UTF-8')
65
66
  blob = Blob.find_blob(jrepo, symlink_source)
@@ -209,15 +210,37 @@ module RJGit
209
210
 
210
211
  query = Regexp.new(query.source, query.options | Regexp::IGNORECASE) if case_insensitive
211
212
 
212
- ls_tree(repo, nil, options.fetch(:ref, 'HEAD'), ls_tree_options).each_with_object({}) do |item, result|
213
- blob = Blob.new(repo, item[:mode], item[:path], walk.lookup_blob(ObjectId.from_string(item[:id])))
214
- next if blob.binary?
213
+ # We optimize below by first grepping the entire file, and then, if a match is found, then identifying the individual line.
214
+ # To avoid missing full-line matches during the optimization, we first convert multiline anchors to single-line anchors.
215
+ query = Regexp.new(query.source.gsub(/\A\\A/, '^').gsub(/\\z\z/, '$'), query.options)
215
216
 
216
- rows = blob.data.split("\n")
217
+ ref = options.fetch(:ref, 'HEAD')
218
+ files_to_scan = ls_tree(repo, nil, ref, ls_tree_options)
219
+
220
+ files_to_scan.each_with_object({}) do |file, result|
221
+ id = if file[:mode] == SYMLINK_TYPE
222
+ symlink_source = repo.open(ObjectId.from_string(file[:id])).get_bytes.to_a.pack('c*').force_encoding('UTF-8')
223
+ unless symlink_source[File::SEPARATOR]
224
+ dir = file[:path].split(File::SEPARATOR)
225
+ dir[-1] = symlink_source
226
+ symlink_source = File.join(dir)
227
+ end
228
+ Blob.find_blob(repo, symlink_source, ref).jblob.id
229
+ else
230
+ ObjectId.from_string(file[:id])
231
+ end
232
+ bytes = repo.open(id).get_bytes
233
+
234
+ next if RawText.is_binary(bytes)
235
+
236
+ file_contents = bytes.to_s
237
+ next unless query.match(file_contents)
238
+
239
+ rows = file_contents.split("\n")
217
240
  data = rows.grep(query)
218
241
  next if data.empty?
219
242
 
220
- result[blob.path] = data
243
+ result[file[:path]] = data
221
244
  end
222
245
  end
223
246
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RJGit
2
- VERSION = "5.9.0.0"
2
+ VERSION = "5.13.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rjgit
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.9.0.0
4
+ version: 5.13.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maarten Engelen
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2020-11-02 00:00:00.000000000 Z
15
+ date: 2021-10-20 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  requirement: !ruby/object:Gem::Requirement
@@ -21,8 +21,8 @@ dependencies:
21
21
  - !ruby/object:Gem::Version
22
22
  version: '3.3'
23
23
  name: mime-types
24
- prerelease: false
25
24
  type: :runtime
25
+ prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - "~>"
@@ -45,12 +45,12 @@ files:
45
45
  - lib/config.rb
46
46
  - lib/constants.rb
47
47
  - lib/git.rb
48
- - lib/java/jars/bcpg-jdk15on-161.jar
49
- - lib/java/jars/bcpkix-jdk15on-161.jar
50
- - lib/java/jars/bcprov-jdk15on-161.jar
48
+ - lib/java/jars/bcpg-jdk15on-168.jar
49
+ - lib/java/jars/bcpkix-jdk15on-168.jar
50
+ - lib/java/jars/bcprov-jdk15on-168.jar
51
51
  - lib/java/jars/jsch-0.1.54.jar
52
- - lib/java/jars/org.eclipse.jgit-5.9.0.202009080501-r.jar
53
- - lib/java/jars/org.eclipse.jgit.ssh.jsch-5.8.0.202006091008-r.jar
52
+ - lib/java/jars/org.eclipse.jgit-5.13.0.202109080827-r.jar
53
+ - lib/java/jars/org.eclipse.jgit.ssh.jsch-5.13.0.202109080827-r.jar
54
54
  - lib/java/jars/slf4j-api-1.7.2.jar
55
55
  - lib/java/jars/slf4j-simple-1.7.12.jar
56
56
  - lib/repo.rb
@@ -81,8 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  requirements: []
84
- rubyforge_project:
85
- rubygems_version: 2.6.13
84
+ rubygems_version: 3.0.9
86
85
  signing_key:
87
86
  specification_version: 4
88
87
  summary: JRuby wrapper around the JGit library.
Binary file
Binary file
Binary file