Skip to content
Snippets Groups Projects
Commit 634a03bf authored by Luke Duncalfe's avatar Luke Duncalfe
Browse files

Redirect project.wiki.git to project wiki home

parent 513daf3d
No related branches found
No related tags found
No related merge requests found
---
title: Redirect from a project wiki git route to the project wiki home
merge_request: 31085
author:
type: added
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
# 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
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