Redirect project.wiki.git to project wiki home
https://gitlab.com/gitlab-org/gitlab-ce/issues/19186
This commit is contained in:
parent
513daf3dd6
commit
634a03bf60
4 changed files with 45 additions and 0 deletions
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Redirect from a project wiki git route to the project wiki home
|
||||
merge_request: 31085
|
||||
author:
|
||||
type: added
|
|
@ -34,6 +34,18 @@ scope(path: '*namespace_id/:project_id',
|
|||
end
|
||||
end
|
||||
|
||||
# Redirect /group/project.wiki.git to the project wiki
|
||||
scope(format: true, constraints: { project_id: Gitlab::PathRegex.project_wiki_git_route_regex, format: :git }) do
|
||||
wiki_redirect = redirect do |params, request|
|
||||
project_id = params[:project_id].delete_suffix('.wiki')
|
||||
path = [params[:namespace_id], project_id, 'wikis'].join('/')
|
||||
path << "?#{request.query_string}" unless request.query_string.blank?
|
||||
path
|
||||
end
|
||||
|
||||
get '/', to: wiki_redirect
|
||||
end
|
||||
|
||||
# Redirect /group/project/info/refs to /group/project.git/info/refs
|
||||
scope(constraints: { project_id: Gitlab::PathRegex.project_route_regex }) do
|
||||
# Allow /info/refs, /info/refs?service=git-upload-pack, and
|
||||
|
|
|
@ -175,6 +175,10 @@ module Gitlab
|
|||
@project_git_route_regex ||= /#{project_route_regex}\.git/.freeze
|
||||
end
|
||||
|
||||
def project_wiki_git_route_regex
|
||||
@project_wiki_git_route_regex ||= /#{PATH_REGEX_STR}\.wiki/.freeze
|
||||
end
|
||||
|
||||
def full_namespace_path_regex
|
||||
@full_namespace_path_regex ||= %r{\A#{full_namespace_route_regex}/\z}
|
||||
end
|
||||
|
|
24
spec/routing/git_http_routing_spec.rb
Normal file
24
spec/routing/git_http_routing_spec.rb
Normal file
|
@ -0,0 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe 'git_http routing' do
|
||||
include RSpec::Rails::RequestExampleGroup
|
||||
|
||||
describe 'wiki.git routing', 'routing' do
|
||||
let(:wiki_path) { '/gitlab/gitlabhq/wikis' }
|
||||
|
||||
it 'redirects namespace/project.wiki.git to the project wiki' do
|
||||
expect(get('/gitlab/gitlabhq.wiki.git')).to redirect_to(wiki_path)
|
||||
end
|
||||
|
||||
it 'preserves query parameters' do
|
||||
expect(get('/gitlab/gitlabhq.wiki.git?foo=bar&baz=qux')).to redirect_to("#{wiki_path}?foo=bar&baz=qux")
|
||||
end
|
||||
|
||||
it 'only redirects when the format is .git' do
|
||||
expect(get('/gitlab/gitlabhq.wiki')).not_to redirect_to(wiki_path)
|
||||
expect(get('/gitlab/gitlabhq.wiki.json')).not_to redirect_to(wiki_path)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue