summaryrefslogtreecommitdiffstats
path: root/lib/git/raw/repository.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/git/raw/repository.rb')
-rw-r--r--lib/git/raw/repository.rb124
1 files changed, 0 insertions, 124 deletions
diff --git a/lib/git/raw/repository.rb b/lib/git/raw/repository.rb
deleted file mode 100644
index bd5e971..0000000
--- a/lib/git/raw/repository.rb
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# converted from the gitrb project
-#
-# authors:
-# Matthias Lederhofer <matled@gmx.net>
-# Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
-#
-# provides native ruby access to git objects and pack files
-#
-
-require 'git/raw/internal/object'
-require 'git/raw/internal/pack'
-require 'git/raw/internal/loose'
-require 'git/raw/object'
-
-module Git
- module Raw
-
- class Repository
- def initialize(git_dir)
- @git_dir = git_dir
- @loose = Raw::Internal::LooseStorage.new(git_path("objects"))
- @packs = []
- initpacks
- end
-
- def show
- @packs.each do |p|
- puts p.name
- puts
- p.each_sha1 do |s|
- puts "**#{p[s].type}**"
- if p[s].type.to_s == 'commit'
- puts s.unpack('H*')
- puts p[s].content
- end
- end
- puts
- end
- end
-
- def object(sha)
- o = get_raw_object_by_sha1(sha)
- c = Git::Raw::Object.from_raw(o)
- end
-
- def cat_file(sha)
- object(sha).raw_content
- end
-
- def log(sha, count = 30)
- output = ''
- i = 0
-
- while sha && (i < count) do
- o = get_raw_object_by_sha1(sha)
- c = Git::Raw::Object.from_raw(o)
-
- output += "commit #{sha}\n"
- output += o.content + "\n"
-
- sha = c.parent.first
- i += 1
- end
-
- output
- end
-
- def get_object_by_sha1(sha1)
- r = get_raw_object_by_sha1(sha1)
- return nil if !r
- Object.from_raw(r, self)
- end
-
- def get_raw_object_by_sha1(sha1)
- sha1 = [sha1].pack("H*")
-
- # try packs
- @packs.each do |pack|
- o = pack[sha1]
- return o if o
- end
-
- # try loose storage
- o = @loose[sha1]
- return o if o
-
- # try packs again, maybe the object got packed in the meantime
- initpacks
- @packs.each do |pack|
- o = pack[sha1]
- return o if o
- end
-
- nil
- end
-
- protected
-
- def git_path(path)
- return "#@git_dir/#{path}"
- end
-
- private
-
- def initpacks
- @packs.each do |pack|
- pack.close
- end
- @packs = []
- Dir.open(git_path("objects/pack/")) do |dir|
- dir.each do |entry|
- if entry =~ /\.pack$/i
- @packs << Git::Raw::Internal::PackStorage.new(git_path("objects/pack/" \
- + entry))
- end
- end
- end
- end
-
- end
-
- end
-end