Merge branch 'git-raw-workhorse' into 'master'
Send raw Git blobs via gitlab-workhorse See merge request !2451
This commit is contained in:
commit
752468d55b
|
@ -1 +1 @@
|
|||
0.6.2
|
||||
0.6.3
|
||||
|
|
|
@ -2,15 +2,13 @@ class Projects::AvatarsController < Projects::ApplicationController
|
|||
before_action :project
|
||||
|
||||
def show
|
||||
@blob = @project.repository.blob_at_branch('master', @project.avatar_in_git)
|
||||
@blob = @repository.blob_at_branch('master', @project.avatar_in_git)
|
||||
if @blob
|
||||
headers['X-Content-Type-Options'] = 'nosniff'
|
||||
send_data(
|
||||
@blob.data,
|
||||
type: @blob.mime_type,
|
||||
disposition: 'inline',
|
||||
filename: @blob.name
|
||||
)
|
||||
headers.store(*Gitlab::Workhorse.send_git_blob(@repository, @blob))
|
||||
headers['Content-Disposition'] = 'inline'
|
||||
headers['Content-Type'] = @blob.content_type
|
||||
head :ok # 'render nothing: true' messes up the Content-Type
|
||||
else
|
||||
render_404
|
||||
end
|
||||
|
|
|
@ -15,7 +15,10 @@ class Projects::RawController < Projects::ApplicationController
|
|||
if @blob.lfs_pointer?
|
||||
send_lfs_object
|
||||
else
|
||||
stream_data
|
||||
headers.store(*Gitlab::Workhorse.send_git_blob(@repository, @blob))
|
||||
headers['Content-Disposition'] = 'inline'
|
||||
headers['Content-Type'] = get_blob_type
|
||||
head :ok # 'render nothing: true' messes up the Content-Type
|
||||
end
|
||||
else
|
||||
render_404
|
||||
|
@ -34,16 +37,6 @@ class Projects::RawController < Projects::ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def stream_data
|
||||
type = get_blob_type
|
||||
|
||||
send_data(
|
||||
@blob.data,
|
||||
type: type,
|
||||
disposition: 'inline'
|
||||
)
|
||||
end
|
||||
|
||||
def send_lfs_object
|
||||
lfs_object = find_lfs_object
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
.file-content.image_file
|
||||
%img{ src: "data:#{blob.mime_type};base64,#{Base64.encode64(blob.data)}"}
|
||||
%img{ src: namespace_project_raw_path(@project.namespace, @project, @id)}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.file-content.code.js-syntax-highlight
|
||||
.line-numbers
|
||||
- if blob.data.present?
|
||||
- blob.data.lines.each_index do |index|
|
||||
- blob.data.each_line.each_with_index do |_, index|
|
||||
- offset = defined?(first_line_number) ? first_line_number : 1
|
||||
- i = index + offset
|
||||
-# We're not using `link_to` because it is too slow once we get to thousands of lines.
|
||||
|
|
|
@ -355,7 +355,7 @@ GitLab Shell is an SSH access and repository management software developed speci
|
|||
cd /home/git
|
||||
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
|
||||
cd gitlab-workhorse
|
||||
sudo -u git -H git checkout 0.6.2
|
||||
sudo -u git -H git checkout 0.6.3
|
||||
sudo -u git -H make
|
||||
|
||||
### Initialize Database and Activate Advanced Features
|
||||
|
|
|
@ -52,7 +52,7 @@ class Spinach::Features::ProjectSourceBrowseFiles < Spinach::FeatureSteps
|
|||
end
|
||||
|
||||
step 'I should see raw file content' do
|
||||
expect(source).to eq sample_blob.data
|
||||
expect(source).to eq '' # Body is filled in by gitlab-workhorse
|
||||
end
|
||||
|
||||
step 'I click button "Edit"' do
|
||||
|
|
|
@ -57,7 +57,7 @@ module API
|
|||
not_found! "File" unless blob
|
||||
|
||||
content_type 'text/plain'
|
||||
present blob.data
|
||||
header *Gitlab::Workhorse.send_git_blob(repo, blob)
|
||||
end
|
||||
|
||||
# Get a raw blob contents by blob sha
|
||||
|
@ -83,7 +83,7 @@ module API
|
|||
env['api.format'] = :txt
|
||||
|
||||
content_type blob.mime_type
|
||||
present blob.data
|
||||
header *Gitlab::Workhorse.send_git_blob(repo, blob)
|
||||
end
|
||||
|
||||
# Get a an archive of the repository
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
require 'base64'
|
||||
require 'json'
|
||||
|
||||
module Gitlab
|
||||
class Workhorse
|
||||
class << self
|
||||
def send_git_blob(repository, blob)
|
||||
params_hash = {
|
||||
'RepoPath' => repository.path_to_repo,
|
||||
'BlobId' => blob.id,
|
||||
}
|
||||
params = Base64.urlsafe_encode64(JSON.dump(params_hash))
|
||||
|
||||
[
|
||||
'Gitlab-Workhorse-Send-Data',
|
||||
"git-blob:#{params}",
|
||||
]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue