Skip to content
Snippets Groups Projects
Commit 5c735af3 authored by Stan Hu's avatar Stan Hu
Browse files

Handle legacy repository archive requests with no ref given

The legacy endpoint requires no reference and defaults to the root
ref.

Closes #45154
parent dd552d06
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -16,8 +16,10 @@ class Projects::RepositoriesController < Projects::ApplicationController
def archive
append_sha = params[:append_sha]
 
shortname = "#{@project.path}-#{@ref.tr('/', '-')}"
append_sha = false if @filename == shortname
if @ref
shortname = "#{@project.path}-#{@ref.tr('/', '-')}"
append_sha = false if @filename == shortname
end
 
send_git_archive @repository, ref: @ref, format: params[:format], append_sha: append_sha
rescue => ex
Loading
Loading
@@ -27,6 +29,9 @@ class Projects::RepositoriesController < Projects::ApplicationController
 
def assign_archive_vars
@id = params[:id]
return unless @id
@ref, @filename = extract_ref(@id)
rescue InvalidPathError
render_404
Loading
Loading
Loading
Loading
@@ -34,6 +34,12 @@ describe Projects::RepositoriesController do
expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:")
end
 
it 'handles legacy queries with no ref' do
get :archive, namespace_id: project.namespace, project_id: project, format: "zip"
expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with("git-archive:")
end
context "when the service raises an error" do
before do
allow(Gitlab::Workhorse).to receive(:send_git_archive).and_raise("Archive failed")
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