summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2016-03-12 17:42:51 +0000
committerDouwe Maan <douwe@gitlab.com>2016-03-12 17:42:51 +0000
commit5a586f364c5d2b866d6a074eff7996f05585b7d5 (patch)
tree6f27747ad662ae16f588e9706ac5e3668bc515e6
parent826bc72c12cde117c52bfc4b2acb59254a24eff9 (diff)
downloadgitlab-ce-5a586f364c5d2b866d6a074eff7996f05585b7d5.tar.gz
Revert "Merge branch 'support-go-subpackages' into 'master' "
This reverts merge request !3191
-rw-r--r--CHANGELOG1
-rw-r--r--app/controllers/projects_controller.rb11
-rw-r--r--app/views/projects/go_import.html.haml5
-rw-r--r--config/initializers/go_get.rb1
-rw-r--r--lib/gitlab/middleware/go.rb50
-rw-r--r--spec/lib/gitlab/middleware/go_spec.rb30
6 files changed, 16 insertions, 82 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 07b187b31a2..d4554b96190 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,7 +1,6 @@
Please view this file on the master branch, on stable branches it's out of date.
v 8.6.0 (unreleased)
- - Support Golang subpackage fetching (Stan Hu)
- Contributions to forked projects are included in calendar
- Improve the formatting for the user page bio (Connor Shea)
- Removed the default password from the initial admin account created during
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index c70add86a20..aea08ecce3e 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -1,6 +1,7 @@
class ProjectsController < ApplicationController
include ExtractsPath
+ prepend_before_action :render_go_import, only: [:show]
skip_before_action :authenticate_user!, only: [:show, :activity]
before_action :project, except: [:new, :create]
before_action :repository, except: [:new, :create]
@@ -241,6 +242,16 @@ class ProjectsController < ApplicationController
end
end
+ def render_go_import
+ return unless params["go-get"] == "1"
+
+ @namespace = params[:namespace_id]
+ @id = params[:project_id] || params[:id]
+ @id = @id.gsub(/\.git\Z/, "")
+
+ render "go_import", layout: false
+ end
+
def repo_exists?
project.repository_exists? && !project.empty_repo?
end
diff --git a/app/views/projects/go_import.html.haml b/app/views/projects/go_import.html.haml
new file mode 100644
index 00000000000..87ac75a350f
--- /dev/null
+++ b/app/views/projects/go_import.html.haml
@@ -0,0 +1,5 @@
+!!! 5
+%html
+ %head
+ - web_url = [Gitlab.config.gitlab.url, @namespace, @id].join('/')
+ %meta{name: "go-import", content: "#{web_url.split('://')[1]} git #{web_url}.git"}
diff --git a/config/initializers/go_get.rb b/config/initializers/go_get.rb
deleted file mode 100644
index 7e7896b4900..00000000000
--- a/config/initializers/go_get.rb
+++ /dev/null
@@ -1 +0,0 @@
-Rails.application.config.middleware.use(Gitlab::Middleware::Go)
diff --git a/lib/gitlab/middleware/go.rb b/lib/gitlab/middleware/go.rb
deleted file mode 100644
index 50b0dd32380..00000000000
--- a/lib/gitlab/middleware/go.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-# A dumb middleware that returns a Go HTML document if the go-get=1 query string
-# is used irrespective if the namespace/project exists
-module Gitlab
- module Middleware
- class Go
- def initialize(app)
- @app = app
- end
-
- def call(env)
- request = Rack::Request.new(env)
-
- if go_request?(request)
- render_go_doc(request)
- else
- @app.call(env)
- end
- end
-
- private
-
- def render_go_doc(request)
- body = go_body(request)
- response = Rack::Response.new(body, 200, { 'Content-Type' => 'text/html' })
- response.finish
- end
-
- def go_request?(request)
- request["go-get"].to_i == 1 && request.env["PATH_INFO"].present?
- end
-
- def go_body(request)
- base_url = Gitlab.config.gitlab.url
- # Go subpackages may be in the form of namespace/project/path1/path2/../pathN
- # We can just ignore the paths and leave the namespace/project
- path_info = request.env["PATH_INFO"]
- path_info.sub!(/^\//, '')
- project_path = path_info.split('/').first(2).join('/')
- request_url = URI.join(base_url, project_path)
- domain_path = strip_url(request_url.to_s)
-
- "<!DOCTYPE html><html><head><meta content='#{domain_path} git #{request_url}.git' name='go-import'></head></html>\n";
- end
-
- def strip_url(url)
- url.gsub(/\Ahttps?:\/\//, '')
- end
- end
- end
-end
diff --git a/spec/lib/gitlab/middleware/go_spec.rb b/spec/lib/gitlab/middleware/go_spec.rb
deleted file mode 100644
index 117a15264da..00000000000
--- a/spec/lib/gitlab/middleware/go_spec.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-require 'spec_helper'
-
-describe Gitlab::Middleware::Go, lib: true do
- let(:app) { double(:app) }
- let(:middleware) { described_class.new(app) }
-
- describe '#call' do
- describe 'when go-get=0' do
- it 'skips go-import generation' do
- env = { 'rack.input' => '',
- 'QUERY_STRING' => 'go-get=0' }
- expect(app).to receive(:call).with(env).and_return('no-go')
- middleware.call(env)
- end
- end
-
- describe 'when go-get=1' do
- it 'returns a document' do
- env = { 'rack.input' => '',
- 'QUERY_STRING' => 'go-get=1',
- 'PATH_INFO' => '/group/project/path' }
- resp = middleware.call(env)
- expect(resp[0]).to eq(200)
- expect(resp[1]['Content-Type']).to eq('text/html')
- expected_body = "<!DOCTYPE html><html><head><meta content='localhost/group/project git http://localhost/group/project.git' name='go-import'></head></html>\n"
- expect(resp[2].body).to eq([expected_body])
- end
- end
- end
-end