Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
74d7de81
Commit
74d7de81
authored
Mar 12, 2016
by
Stan Hu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Revert "Merge branch 'support-go-subpackages' into 'master'
This reverts commit
5a586f36
parent
30ab290b
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
82 additions
and
16 deletions
+82
-16
CHANGELOG
CHANGELOG
+1
-0
app/controllers/projects_controller.rb
app/controllers/projects_controller.rb
+0
-11
app/views/projects/go_import.html.haml
app/views/projects/go_import.html.haml
+0
-5
config/initializers/go_get.rb
config/initializers/go_get.rb
+1
-0
lib/gitlab/middleware/go.rb
lib/gitlab/middleware/go.rb
+50
-0
spec/lib/gitlab/middleware/go_spec.rb
spec/lib/gitlab/middleware/go_spec.rb
+30
-0
No files found.
CHANGELOG
View file @
74d7de81
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
...
...
app/controllers/projects_controller.rb
View file @
74d7de81
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
]
...
...
@@ -242,16 +241,6 @@ 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
...
...
app/views/projects/go_import.html.haml
deleted
100644 → 0
View file @
30ab290b
!!! 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"
}
config/initializers/go_get.rb
0 → 100644
View file @
74d7de81
Rails
.
application
.
config
.
middleware
.
use
(
Gitlab
::
Middleware
::
Go
)
lib/gitlab/middleware/go.rb
0 → 100644
View file @
74d7de81
# 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
spec/lib/gitlab/middleware/go_spec.rb
0 → 100644
View file @
74d7de81
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment