Improve code according to new gitlab_git
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
bacfad1c65
commit
97a4d8aea4
|
@ -166,13 +166,13 @@ module GitlabMarkdownHelper
|
|||
|
||||
def file_exists?(path)
|
||||
return false if path.nil? || path.empty?
|
||||
return @repository.blob_at(current_ref, path).present? || Tree.new(@repository, current_ref, path).entries.any?
|
||||
return @repository.blob_at(current_ref, path).present? || @repository.tree(:head, path).entries.any?
|
||||
end
|
||||
|
||||
# Check if the path is pointing to a directory(tree) or a file(blob)
|
||||
# eg. doc/api is directory and doc/README.md is file
|
||||
def local_path(path)
|
||||
return "tree" if Tree.new(@repository, current_ref, path).entries.any?
|
||||
return "tree" if @repository.tree(:head, path).entries.any?
|
||||
return "raw" if @repository.blob_at(current_ref, path).image?
|
||||
return "blob"
|
||||
end
|
||||
|
|
|
@ -163,7 +163,19 @@ class Repository
|
|||
|
||||
def readme
|
||||
Rails.cache.fetch(cache_key(:readme)) do
|
||||
Tree.new(self, self.root_ref).readme
|
||||
tree(:head).readme
|
||||
end
|
||||
end
|
||||
|
||||
def head_commit
|
||||
commit(self.root_ref)
|
||||
end
|
||||
|
||||
def tree(sha = :head, path = nil)
|
||||
if sha == :head
|
||||
sha = head_commit.sha
|
||||
end
|
||||
|
||||
Tree.new(self, sha, path)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -23,4 +23,8 @@ class Tree
|
|||
def submodules
|
||||
@entries.select(&:submodule?)
|
||||
end
|
||||
|
||||
def sorted_entries
|
||||
trees + blobs + submodules
|
||||
end
|
||||
end
|
||||
|
|
|
@ -79,7 +79,16 @@ module API
|
|||
end
|
||||
|
||||
class RepoObject < Grape::Entity
|
||||
expose :name, :commit
|
||||
expose :name
|
||||
|
||||
expose :commit do |repo_obj, options|
|
||||
if repo_obj.respond_to?(:commit)
|
||||
repo_obj.commit
|
||||
elsif options[:project]
|
||||
options[:project].repository.commit(repo_obj.target)
|
||||
end
|
||||
end
|
||||
|
||||
expose :protected do |repo, options|
|
||||
if options[:project]
|
||||
options[:project].protected_branch? repo.name
|
||||
|
@ -87,6 +96,16 @@ module API
|
|||
end
|
||||
end
|
||||
|
||||
class RepoTreeObject < Grape::Entity
|
||||
expose :id, :name, :type
|
||||
|
||||
expose :mode do |obj, options|
|
||||
filemode = obj.mode.to_s(8)
|
||||
filemode = "0" + filemode if filemode.length < 6
|
||||
filemode
|
||||
end
|
||||
end
|
||||
|
||||
class RepoCommit < Grape::Entity
|
||||
expose :id, :short_id, :title, :author_name, :author_email, :created_at
|
||||
end
|
||||
|
|
|
@ -82,7 +82,7 @@ module API
|
|||
# Example Request:
|
||||
# GET /projects/:id/repository/tags
|
||||
get ":id/repository/tags" do
|
||||
present user_project.repo.tags.sort_by(&:name).reverse, with: Entities::RepoObject
|
||||
present user_project.repo.tags.sort_by(&:name).reverse, with: Entities::RepoObject, project: user_project
|
||||
end
|
||||
|
||||
# Get a project repository commits
|
||||
|
@ -141,15 +141,9 @@ module API
|
|||
path = params[:path] || nil
|
||||
|
||||
commit = user_project.repository.commit(ref)
|
||||
tree = Tree.new(user_project.repository, commit.id, path)
|
||||
tree = user_project.repository.tree(commit.id, path)
|
||||
|
||||
trees = []
|
||||
|
||||
%w(trees blobs submodules).each do |type|
|
||||
trees += tree.send(type).map { |t| {name: t.name, type: type.singularize, mode: t.mode, id: t.id} }
|
||||
end
|
||||
|
||||
trees
|
||||
present tree.sorted_entries, with: Entities::RepoTreeObject
|
||||
end
|
||||
|
||||
# Get a raw file contents
|
||||
|
@ -233,4 +227,3 @@ module API
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -117,7 +117,7 @@ module ExtractsPath
|
|||
end
|
||||
|
||||
def tree
|
||||
@tree ||= Tree.new(@repo, @commit.id, @path)
|
||||
@tree ||= @repo.tree(@commit.id, @path)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
Loading…
Reference in New Issue