Skip to content
Snippets Groups Projects
Commit 53726415 authored by Jacob Vosmaer (GitLab)'s avatar Jacob Vosmaer (GitLab)
Browse files

Merge branch 'lazy-blobs' into 'master'

Lazy Git blobs

To prevent madness like loading a 100MB file into Ruby's memory just
to decide whether it is binary or text.

See merge request !2663
parents 6cffcb05 d3affe8b
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -49,7 +49,7 @@ gem "browser", '~> 1.0.0'
 
# Extracting information from a git repository
# Provide access to Gitlab::Git library
gem "gitlab_git", '~> 7.2.23'
gem "gitlab_git", '~> 8.0.0'
 
# LDAP Auth
# GitLab fork with several improvements to original library. For full list of changes
Loading
Loading
Loading
Loading
@@ -356,7 +356,7 @@ GEM
posix-spawn (~> 0.3)
gitlab_emoji (0.2.0)
gemojione (~> 2.1)
gitlab_git (7.2.24)
gitlab_git (8.0.0)
activesupport (~> 4.0)
charlock_holmes (~> 0.7.3)
github-linguist (~> 4.7.0)
Loading
Loading
@@ -934,7 +934,7 @@ DEPENDENCIES
github-markup (~> 1.3.1)
gitlab-flowdock-git-hook (~> 1.0.1)
gitlab_emoji (~> 0.2.0)
gitlab_git (~> 7.2.23)
gitlab_git (~> 8.0.0)
gitlab_meta (= 7.0)
gitlab_omniauth-ldap (~> 1.2.1)
gollum-lib (~> 4.1.0)
Loading
Loading
Loading
Loading
@@ -33,6 +33,7 @@ class Projects::BlobController < Projects::ApplicationController
 
def edit
@last_commit = Gitlab::Git::Commit.last_for_path(@repository, @ref, @path).sha
blob.load_all_data!(@repository)
end
 
def update
Loading
Loading
@@ -51,6 +52,7 @@ class Projects::BlobController < Projects::ApplicationController
 
def preview
@content = params[:content]
@blob.load_all_data!(@repository)
diffy = Diffy::Diff.new(@blob.data, @content, diff: '-U 3', include_diff_info: true)
diff_lines = diffy.diff.scan(/.*\n/)[2..-1]
diff_lines = Gitlab::Diff::Parser.new.parse(diff_lines)
Loading
Loading
Loading
Loading
@@ -205,7 +205,11 @@ module Ci
end
 
def ci_yaml_file
@ci_yaml_file ||= project.repository.blob_at(sha, '.gitlab-ci.yml').data
@ci_yaml_file ||= begin
blob = project.repository.blob_at(sha, '.gitlab-ci.yml')
blob.load_all_data!(project.repository)
blob.data
end
rescue
nil
end
Loading
Loading
Loading
Loading
@@ -39,6 +39,8 @@ class Tree
 
git_repo = repository.raw_repository
@readme = Gitlab::Git::Blob.find(git_repo, sha, readme_path)
@readme.load_all_data!(git_repo)
@readme
end
 
def trees
Loading
Loading
- blob.load_all_data!(@repository)
- if markup?(blob.name)
.file-content.wiki
= render_markup(blob.name, blob.data)
Loading
Loading
Loading
Loading
@@ -58,9 +58,11 @@ module API
commit = user_project.commit(ref)
not_found! 'Commit' unless commit
 
blob = user_project.repository.blob_at(commit.sha, file_path)
repo = user_project.repository
blob = repo.blob_at(commit.sha, file_path)
 
if blob
blob.load_all_data!(repo)
status(200)
 
{
Loading
Loading
@@ -72,7 +74,7 @@ module API
ref: ref,
blob_id: blob.id,
commit_id: commit.id,
last_commit_id: user_project.repository.last_commit_for_path(commit.sha, file_path).id
last_commit_id: repo.last_commit_for_path(commit.sha, file_path).id
}
else
not_found! 'File'
Loading
Loading
Loading
Loading
@@ -8,6 +8,7 @@ module Gitlab
blob = repository.blob_at(ref, file_name)
return [] unless blob
 
blob.load_all_data!(repository)
highlight(file_name, blob.data).lines.map!(&:html_safe)
end
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment