Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/presenters/tree_entry_presenter.rb')
-rw-r--r--app/presenters/tree_entry_presenter.rb17
1 files changed, 15 insertions, 2 deletions
diff --git a/app/presenters/tree_entry_presenter.rb b/app/presenters/tree_entry_presenter.rb
index 0b313d81360..3f4a9f13c36 100644
--- a/app/presenters/tree_entry_presenter.rb
+++ b/app/presenters/tree_entry_presenter.rb
@@ -4,10 +4,23 @@ class TreeEntryPresenter < Gitlab::View::Presenter::Delegated
presents nil, as: :tree
def web_url
- Gitlab::Routing.url_helpers.project_tree_url(tree.repository.project, File.join(tree.commit_id, tree.path))
+ Gitlab::Routing.url_helpers.project_tree_url(tree.repository.project, ref_qualified_path,
+ ref_type: tree.ref_type)
end
def web_path
- Gitlab::Routing.url_helpers.project_tree_path(tree.repository.project, File.join(tree.commit_id, tree.path))
+ Gitlab::Routing.url_helpers.project_tree_path(tree.repository.project, ref_qualified_path,
+ ref_type: tree.ref_type)
+ end
+
+ private
+
+ def ref_qualified_path
+ # If `ref_type` is present the commit_id will include the ref qualifier e.g. `refs/heads/`.
+ # We only accept/return unqualified refs so we need to remove the qualifier from the `commit_id`.
+
+ commit_id = ExtractsRef.unqualify_ref(tree.commit_id, ref_type)
+
+ File.join(commit_id, tree.path)
end
end