git_repository.rb revision 391f72f778a8c9e1cbaed1860f4a4754d6881c8a
5c4c13ac875d79def115ce3d8443d4ec87b3252aJulian Kornberger# Wrapper for access to the local Git repository
1167711784176c2c46f3b69a3530a8aff0d575f7Eugen Kuksa#requires git and git-svn to be installed for the functions clone_git and clone_svn to work
5c4c13ac875d79def115ce3d8443d4ec87b3252aJulian Kornberger @repo = Rugged::Repository.init_at(path, true)
039b6fe97fd37af689c6991e6fceef72bbd617fcEugen Kuksa # DELETEME (exists only for debugging purpose)
a5a4e2f7ee10435dab96569b4514486f0eee6c09Eugen Kuksa ref = Rugged::Reference.lookup(@repo, "refs/heads/#{name}")
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa file_path << '/' if file_path[-1] != '/' && !file_path.empty?
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def is_head?(commit_oid=nil)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa commit_oid == nil || (!@repo.empty? && commit_oid == head_oid)
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa def head_oid
391f72f778a8c9e1cbaed1860f4a4754d6881c8aEugen Kuksa if @repo.empty?
391f72f778a8c9e1cbaed1860f4a4754d6881c8aEugen Kuksa @repo.head.target
039b6fe97fd37af689c6991e6fceef72bbd617fcEugen Kuksa def self.is_repository_with_working_copy?(path)
039b6fe97fd37af689c6991e6fceef72bbd617fcEugen Kuksa repo = Rugged::Repository.new(path)
039b6fe97fd37af689c6991e6fceef72bbd617fcEugen Kuksa rescue Rugged::RepositoryError
1167711784176c2c46f3b69a3530a8aff0d575f7Eugen Kuksa def self.is_bare_repository?(path)
1167711784176c2c46f3b69a3530a8aff0d575f7Eugen Kuksa repo = Rugged::Repository.new(path)
1167711784176c2c46f3b69a3530a8aff0d575f7Eugen Kuksa rescue Rugged::RepositoryError
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def path_exists_rugged?(rugged_commit, url='')
391f72f778a8c9e1cbaed1860f4a4754d6881c8aEugen Kuksa if url.empty?
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa tree = rugged_commit.tree
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa nil != get_object(rugged_commit, url)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa rescue Rugged::OdbError
1b3a30e097b49e2c7a8d09b5d4cf544c1fec299bEugen Kuksa def get_file_rugged(rugged_commit, url='')
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa return nil unless path_exists_rugged?(rugged_commit, url)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa object = get_object(rugged_commit, url)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa if object.type == :blob
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa filename = url.split('/')[-1]
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa mime_info = mime_info(filename)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa name: filename,
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa size: object.size,
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa content: object.content,
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa mime_type: mime_info[:mime_type],
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa mime_category: mime_info[:mime_category]
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa def mime_info(filename)
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa ext = File.extname(filename)[1..-1]
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa mime_type = Mime::Type.lookup_by_extension(ext) || Mime::TEXT
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa mime_category = mime_type.to_s.split('/')[0]
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa mime_type: mime_type,
82943dcc7f878756736a3f21a8100b389b94ba46Eugen Kuksa mime_category: mime_category
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa @repo.lookup(head_oid)