Commit 910da231 authored by Douwe Maan's avatar Douwe Maan

Merge branch 'restore-get_id' into 'master'

Restore get_id in ExtractsPath

fixes #21334

`Addressable::URI.normalize_component()` around `get_id` which was introduced by 68cea38e and removed in !5878 is still intentionally omitted. Using `normalize_component()` instead of `unescape()` left `%` as is but still broke e.g. spaces (which were replaced by `%20`).

See merge request !5974
parents cd6157d5 ddbdf4e6
...@@ -5,7 +5,7 @@ class ProjectsController < Projects::ApplicationController ...@@ -5,7 +5,7 @@ class ProjectsController < Projects::ApplicationController
before_action :project, except: [:new, :create] before_action :project, except: [:new, :create]
before_action :repository, except: [:new, :create] before_action :repository, except: [:new, :create]
before_action :assign_ref_vars, only: [:show], if: :repo_exists? before_action :assign_ref_vars, only: [:show], if: :repo_exists?
before_action :assign_tree_vars, only: [:show], if: [:repo_exists?, :project_view_files?] before_action :tree, only: [:show], if: [:repo_exists?, :project_view_files?]
# Authorize # Authorize
before_action :authorize_admin_project!, only: [:edit, :update, :housekeeping, :download_export, :export, :remove_export, :generate_new_export] before_action :authorize_admin_project!, only: [:edit, :update, :housekeeping, :download_export, :export, :remove_export, :generate_new_export]
...@@ -332,11 +332,4 @@ class ProjectsController < Projects::ApplicationController ...@@ -332,11 +332,4 @@ class ProjectsController < Projects::ApplicationController
def get_id def get_id
project.repository.root_ref project.repository.root_ref
end end
# ExtractsPath will set @id = project.path on the show route, but it has to be the
# branch name for the tree view to work correctly.
def assign_tree_vars
@id = get_id
tree
end
end end
...@@ -94,9 +94,7 @@ module ExtractsPath ...@@ -94,9 +94,7 @@ module ExtractsPath
@options = params.select {|key, value| allowed_options.include?(key) && !value.blank? } @options = params.select {|key, value| allowed_options.include?(key) && !value.blank? }
@options = HashWithIndifferentAccess.new(@options) @options = HashWithIndifferentAccess.new(@options)
@id = params[:id] || params[:ref] @id = get_id
@id += "/" + params[:path] unless params[:path].blank?
@ref, @path = extract_ref(@id) @ref, @path = extract_ref(@id)
@repo = @project.repository @repo = @project.repository
if @options[:extended_sha1].blank? if @options[:extended_sha1].blank?
...@@ -118,4 +116,13 @@ module ExtractsPath ...@@ -118,4 +116,13 @@ module ExtractsPath
def tree def tree
@tree ||= @repo.tree(@commit.id, @path) @tree ||= @repo.tree(@commit.id, @path)
end end
private
# overriden in subclasses, do not remove
def get_id
id = params[:id] || params[:ref]
id += "/" + params[:path] unless params[:path].blank?
id
end
end end
...@@ -51,6 +51,16 @@ describe ExtractsPath, lib: true do ...@@ -51,6 +51,16 @@ describe ExtractsPath, lib: true do
expect(@path).to eq(params[:path]) expect(@path).to eq(params[:path])
end end
end end
context 'subclass overrides get_id' do
it 'uses ref returned by get_id' do
allow_any_instance_of(self.class).to receive(:get_id){ '38008cb17ce1466d8fec2dfa6f6ab8dcfe5cf49e' }
assign_ref_vars
expect(@id).to eq(get_id)
end
end
end end
describe '#extract_ref' do describe '#extract_ref' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment