Merge branch 'sh-handle-legacy-archive-requests' into 'master'
Handle legacy repository archive requests with no ref given Closes #45154 See merge request gitlab-org/gitlab-ce!18246
This commit is contained in:
commit
e9947951a5
2 changed files with 13 additions and 2 deletions
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -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…
Reference in a new issue