Sha256: 1e505dd240c9de3a41394093b8820f28fe0d49384fc86626580d300490478156
Contents?: true
Size: 1.33 KB
Versions: 3
Compression:
Stored size: 1.33 KB
Contents
require 'rugged' class GitFileReader def initialize(repo_dir = '.') @repo = Rugged::Repository.new repo_dir end def blob_at(ref, path) commit = @repo.rev_parse ref # Rugged::Commit @repo.blob_at(commit.oid, path) # Rugged::Blob end def commit_for_ref(ref) reference = @repo.ref ref # Rugged::Reference abort "Error: #{ref} is an invalid ref" if reference.nil? reference_direct = reference.type == :symbolic ? reference.target : reference @commit = reference_direct.target # Rugged::Commit self end # @return content of desired file def contents(filename) abort('Error: @commit is undefined; invoke commit_for_ref before invoking contents') if @commit.nil? tree = @commit.tree # Rugged::Tree entry = tree.get_entry filename # hash abort("Error: #{filename} is not present in commit #{commit.oid}") if entry.nil? sha = entry[:oid] # String object = @repo.read sha # Rugged::ObdObject; this is a blob object.data # String end end if $PROGRAM_NAME == __FILE__ puts GitFileReader.new('.').blob_at('HEAD~2', 'README.md').content # puts GitFileReader.new('.').commit_for_ref('HEAD^').contents('README.md') # puts GitFileReader.new('.').commit_for_ref('HEAD').contents('README.md') # puts GitFileReader.new('.').commit_for_ref('refs/heads/master').contents('README.md') end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
jekyll_flexible_include-2.0.20 | lib/git_util.rb |
jekyll_flexible_include-2.0.19 | lib/git_util.rb |
jekyll_flexible_include-2.0.18 | lib/git_util.rb |