Commit 71218345 authored by Robert Speicher's avatar Robert Speicher Committed by Robert Speicher

Merge branch 'fix-wiki-clone-over-http' into 'master'

Fix cloning Wiki repositories via HTTP

Cloning a project Wiki over HTTP would end up cloning the main repository
since the .wiki extension was being stripped.

Closes #3106

See merge request !1676
parent 6721215f
Please view this file on the master branch, on stable branches it's out of date.
v 8.2.0 (unreleased)
- Fix cloning Wiki repositories via HTTP (Stan Hu)
- Improved performance of replacing references in comments
- Show last project commit to default branch on project home page
- Highlight comment based on anchor in URL
- Adds ability to remove the forked relationship from project settings screen. (Han Loong Liauw)
- Improved performance of sorting milestone issues
- Allow users to select the Files view as default project view (Cristian Bica)
- Show "Empty Repository Page" for repository without branches (Artem V. Navrotskiy)
- Fix: Inability to reply to code comments in the MR view, if the MR comes from a fork
v 8.1.0
- Ensure MySQL CI limits DB migrations occur after the fields have been created (Stan Hu)
- Redirect to a default path if HTTP_REFERER is not set (Stan Hu)
......
......@@ -193,12 +193,19 @@ module Grack
end
def render_grack_auth_ok
repo_path =
if @request.path_info =~ /^([\w\.\/-]+)\.wiki\.git/
ProjectWiki.new(project).repository.path_to_repo
else
project.repository.path_to_repo
end
[
200,
{ "Content-Type" => "application/json" },
[JSON.dump({
'GL_ID' => Gitlab::ShellEnv.gl_id(@user),
'RepoPath' => project.repository.path_to_repo,
'RepoPath' => repo_path,
})]
]
end
......
......@@ -50,6 +50,22 @@ describe Grack::Auth do
end
end
context "when the Wiki for a project exists" do
before do
@wiki = ProjectWiki.new(project)
env["PATH_INFO"] = "#{@wiki.repository.path_with_namespace}.git/info/refs"
project.update_attribute(:visibility_level, Project::PUBLIC)
end
it "responds with the right project" do
response = auth.call(env)
json_body = ActiveSupport::JSON.decode(response[2][0])
expect(response.first).to eq(200)
expect(json_body['RepoPath']).to include(@wiki.repository.path_with_namespace)
end
end
context "when the project exists" do
before do
env["PATH_INFO"] = project.path_with_namespace + ".git"
......
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