diff --git a/gollum-rjgit_adapter.gemspec b/gollum-rjgit_adapter.gemspec index 6f2a49d..2ffd831 100644 --- a/gollum-rjgit_adapter.gemspec +++ b/gollum-rjgit_adapter.gemspec @@ -12,7 +12,7 @@ Gem::Specification.new do |s| s.summary = %q{Adapter for Gollum to use RJGit at the backend.} s.description = %q{Adapter for Gollum to use RJGit at the backend.} - s.add_runtime_dependency "rjgit", "~> 6.1" + s.add_runtime_dependency "rjgit", "~> 6.5" s.add_development_dependency "rspec", "3.4.0" s.files = Dir['lib/**/*.rb'] + ["README.md", "Gemfile"] diff --git a/lib/rjgit_adapter/git_layer_rjgit.rb b/lib/rjgit_adapter/git_layer_rjgit.rb index 16e9ac7..810dd1b 100644 --- a/lib/rjgit_adapter/git_layer_rjgit.rb +++ b/lib/rjgit_adapter/git_layer_rjgit.rb @@ -437,7 +437,7 @@ def log(ref = Gollum::Git.default_ref_for_repo(@repo), path = nil, options = {}) def lstree(sha, options={}) entries = RJGit::Porcelain.ls_tree(@repo.jrepo, nil, @repo.find(sha, :tree), {:recursive => options[:recursive]}) entries.map! do |entry| - entry[:mode] = entry[:mode].to_s(8) + entry[:mode] = entry[:mode] entry[:sha] = entry[:id] entry end @@ -478,13 +478,21 @@ def id end def /(file) - @tree.send(:/, file) + obj = @tree.send(:/, file) + return nil if obj.nil? + obj.is_a?(RJGit::Tree) ? Gollum::Git::Tree.new(obj) : Gollum::Git::Blob.new(obj) end def blobs return Array.new if @tree == {} @tree.blobs.map{|blob| Gollum::Git::Blob.new(blob) } end + + def find_blob(&block) + return nil unless block_given? + blob = @tree.find_blob {|blob| yield blob[:name] } + blob ? Gollum::Git::Blob.new(blob) : nil + end end class NoSuchShaFound < StandardError