git_repository.rb revision 389ef6f0a2c389ad624dcf0b0e7336e39c3fbec5
5c4c13ac875d79def115ce3d8443d4ec87b3252aJulian Kornberger# Wrapper for access to the local Git repository
b66a6512eb6dea6cf5339eaa857a81d1b89cb4deJulian Kornberger# requires git and git-svn to be installed for the functions clone_git and clone_svn to work
039b6fe97fd37af689c6991e6fceef72bbd617fcEugen Kuksa FileUtils.mkdir_p(Ontohub::Application.config.git_root)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa return false
9e3e0144c09a30bdb6211168a35dacbf0cb130d8Eugen Kuksa rugged_commit = repo.lookup(commit_oid || head_oid)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa dir = dir?(path, commit_oid) ? path : path.split('/')[0..-2].join('/')
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa raise GitRepository::PathNotFoundError if !rugged_commit && path.empty?
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa raise PathNotFoundError.new unless path_exists?(path, oid)
a5a4e2f7ee10435dab96569b4514486f0eee6c09Eugen Kuksa # Given a commit oid or a branch name, commit_id returns a hash of oid and
a5a4e2f7ee10435dab96569b4514486f0eee6c09Eugen Kuksa return {oid: head_oid, branch_name: 'master'} if ref.nil?
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa {oid: oid, branch_name: branch_names.empty? ? nil : branch_names[0][: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? || (!empty? && commit_oid == head_oid)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def head_oid
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa repo.head.target.oid
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def self.is_repository_with_working_copy?(path)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa repo = Rugged::Repository.new(path)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa rescue Rugged::RepositoryError
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def self.is_bare_repository?(path)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa Rugged::Repository.new(path).bare?
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa rescue Rugged::RepositoryError
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def self.mime_type_editable?(mime_type)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa mime_type.to_s == 'application/xml' || mime_type.to_s.match(/^text\/.*/)
a2b3d5bb602a9a0d970b6640948f1d7d75ce78bfEugen Kuksa def self.mime_info(filename)