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
Boxiang Sun
gitlab-ce
Commits
705e43bf
Commit
705e43bf
authored
Apr 10, 2015
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
parents
24d139ba
63317597
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
179 additions
and
10 deletions
+179
-10
CHANGELOG
CHANGELOG
+3
-0
app/assets/javascripts/users_select.js.coffee
app/assets/javascripts/users_select.js.coffee
+8
-0
app/helpers/selects_helper.rb
app/helpers/selects_helper.rb
+2
-0
app/helpers/submodule_helper.rb
app/helpers/submodule_helper.rb
+13
-6
app/models/project_services/gitlab_ci_service.rb
app/models/project_services/gitlab_ci_service.rb
+28
-0
app/services/projects/fork_service.rb
app/services/projects/fork_service.rb
+6
-0
app/views/projects/issues/_issue_context.html.haml
app/views/projects/issues/_issue_context.html.haml
+1
-1
app/views/shared/_issuable_filter.html.haml
app/views/shared/_issuable_filter.html.haml
+2
-2
app/workers/fork_registration_worker.rb
app/workers/fork_registration_worker.rb
+12
-0
features/project/issues/issues.feature
features/project/issues/issues.feature
+6
-0
features/steps/project/issues/issues.rb
features/steps/project/issues/issues.rb
+12
-0
features/steps/shared/project.rb
features/steps/shared/project.rb
+7
-0
spec/helpers/submodule_helper_spec.rb
spec/helpers/submodule_helper_spec.rb
+35
-0
spec/models/project_services/gitlab_ci_service_spec.rb
spec/models/project_services/gitlab_ci_service_spec.rb
+21
-0
spec/services/projects/fork_service_spec.rb
spec/services/projects/fork_service_spec.rb
+13
-1
spec/workers/fork_registration_worker_spec.rb
spec/workers/fork_registration_worker_spec.rb
+10
-0
No files found.
CHANGELOG
View file @
705e43bf
Please view this file on the master branch, on stable branches it's out of date.
Please view this file on the master branch, on stable branches it's out of date.
v 7.10.0 (unreleased)
v 7.10.0 (unreleased)
- Fix broken file browsing with a submodule that contains a relative link (Stan Hu)
- Fix bug where Wiki pages that included a '/' were no longer accessible (Stan Hu)
- Fix bug where Wiki pages that included a '/' were no longer accessible (Stan Hu)
- Fix bug where error messages from Dropzone would not be displayed on the issues page (Stan Hu)
- Fix bug where error messages from Dropzone would not be displayed on the issues page (Stan Hu)
- Add ability to configure Reply-To address in gitlab.yml (Stan Hu)
- Add ability to configure Reply-To address in gitlab.yml (Stan Hu)
- Move current user to the top of the list in assignee/author filters (Stan Hu)
- Fix broken side-by-side diff view on merge request page (Stan Hu)
- Fix broken side-by-side diff view on merge request page (Stan Hu)
- Set Application controller default URL options to ensure all url_for calls are consistent (Stan Hu)
- Set Application controller default URL options to ensure all url_for calls are consistent (Stan Hu)
- Allow HTML tags in Markdown input
- Allow HTML tags in Markdown input
...
@@ -64,6 +66,7 @@ v 7.10.0 (unreleased)
...
@@ -64,6 +66,7 @@ v 7.10.0 (unreleased)
- Fixed link paths for HTTP and SSH on the admin project view (Jeremy Maziarz)
- Fixed link paths for HTTP and SSH on the admin project view (Jeremy Maziarz)
- Fix and improve help rendering (Sullivan Sénéchal)
- Fix and improve help rendering (Sullivan Sénéchal)
- Fix final line in EmailsOnPush email diff being rendered as error.
- Fix final line in EmailsOnPush email diff being rendered as error.
- Authometic setup GitLab CI project for forks if origin project has GitLab CI enabled
v 7.9.3
v 7.9.3
- Contains no changes
- Contains no changes
...
...
app/assets/javascripts/users_select.js.coffee
View file @
705e43bf
...
@@ -8,6 +8,7 @@ class @UsersSelect
...
@@ -8,6 +8,7 @@ class @UsersSelect
@
groupId
=
$
(
select
).
data
(
'group-id'
)
@
groupId
=
$
(
select
).
data
(
'group-id'
)
showNullUser
=
$
(
select
).
data
(
'null-user'
)
showNullUser
=
$
(
select
).
data
(
'null-user'
)
showAnyUser
=
$
(
select
).
data
(
'any-user'
)
showAnyUser
=
$
(
select
).
data
(
'any-user'
)
firstUser
=
$
(
select
).
data
(
'first-user'
)
$
(
select
).
select2
$
(
select
).
select2
placeholder
:
"Search for a user"
placeholder
:
"Search for a user"
...
@@ -32,6 +33,13 @@ class @UsersSelect
...
@@ -32,6 +33,13 @@ class @UsersSelect
id
:
0
id
:
0
}
}
if
firstUser
# Move current user to the front of the list
for
obj
,
index
in
data
.
results
if
obj
.
username
==
firstUser
data
.
results
.
splice
(
index
,
1
)
data
.
results
.
unshift
(
obj
)
break
if
showNullUser
if
showNullUser
data
.
results
.
unshift
(
nullUser
)
data
.
results
.
unshift
(
nullUser
)
if
showAnyUser
if
showAnyUser
...
...
app/helpers/selects_helper.rb
View file @
705e43bf
...
@@ -8,12 +8,14 @@ module SelectsHelper
...
@@ -8,12 +8,14 @@ module SelectsHelper
null_user
=
opts
[
:null_user
]
||
false
null_user
=
opts
[
:null_user
]
||
false
any_user
=
opts
[
:any_user
]
||
false
any_user
=
opts
[
:any_user
]
||
false
first_user
=
opts
[
:first_user
]
&&
current_user
?
current_user
.
username
:
false
html
=
{
html
=
{
class:
css_class
,
class:
css_class
,
'data-placeholder'
=>
placeholder
,
'data-placeholder'
=>
placeholder
,
'data-null-user'
=>
null_user
,
'data-null-user'
=>
null_user
,
'data-any-user'
=>
any_user
,
'data-any-user'
=>
any_user
,
'data-first-user'
=>
first_user
}
}
unless
opts
[
:scope
]
==
:all
unless
opts
[
:scope
]
==
:all
...
...
app/helpers/submodule_helper.rb
View file @
705e43bf
...
@@ -53,15 +53,22 @@ module SubmoduleHelper
...
@@ -53,15 +53,22 @@ module SubmoduleHelper
end
end
def
relative_self_links
(
url
,
commit
)
def
relative_self_links
(
url
,
commit
)
if
url
.
scan
(
/(\.\.\/)/
).
size
==
2
# Map relative links to a namespace and project
base
=
url
[
/([^\/]*\/[^\/]*)\.git/
,
1
]
# For example:
else
# ../bar.git -> same namespace, repo bar
base
=
[
@project
.
group
.
path
,
'/'
,
url
[
/([^\/]*)\.git/
,
1
]
].
join
(
''
)
# ../foo/bar.git -> namespace foo, repo bar
# ../../foo/bar/baz.git -> namespace bar, repo baz
components
=
url
.
split
(
'/'
)
base
=
components
.
pop
.
gsub
(
/.git$/
,
''
)
namespace
=
components
.
pop
.
gsub
(
/^\.\.$/
,
''
)
if
namespace
.
empty?
namespace
=
@project
.
group
.
path
end
end
[
[
namespace_project_path
(
base
.
namespace
,
base
),
namespace_project_path
(
namespace
,
base
),
namespace_project_tree_path
(
base
.
namespace
,
base
,
commit
)
namespace_project_tree_path
(
namespace
,
base
,
commit
)
]
]
end
end
end
end
app/models/project_services/gitlab_ci_service.rb
View file @
705e43bf
...
@@ -18,6 +18,8 @@
...
@@ -18,6 +18,8 @@
#
#
class
GitlabCiService
<
CiService
class
GitlabCiService
<
CiService
API_PREFIX
=
"api/v1"
prop_accessor
:project_url
,
:token
prop_accessor
:project_url
,
:token
validates
:project_url
,
presence:
true
,
if: :activated?
validates
:project_url
,
presence:
true
,
if: :activated?
validates
:token
,
presence:
true
,
if: :activated?
validates
:token
,
presence:
true
,
if: :activated?
...
@@ -59,6 +61,26 @@ class GitlabCiService < CiService
...
@@ -59,6 +61,26 @@ class GitlabCiService < CiService
end
end
end
end
def
fork_registration
(
new_project
,
private_token
)
params
=
{
id:
new_project
.
id
,
name_with_namespace:
new_project
.
name_with_namespace
,
web_url:
new_project
.
web_url
,
default_branch:
new_project
.
default_branch
,
ssh_url_to_repo:
new_project
.
ssh_url_to_repo
}
HTTParty
.
post
(
fork_registration_path
,
body:
{
project_id:
project
.
id
,
project_token:
token
,
private_token:
private_token
,
data:
params
},
verify:
false
)
end
def
commit_coverage
(
sha
,
ref
)
def
commit_coverage
(
sha
,
ref
)
response
=
get_ci_build
(
sha
,
ref
)
response
=
get_ci_build
(
sha
,
ref
)
...
@@ -97,4 +119,10 @@ class GitlabCiService < CiService
...
@@ -97,4 +119,10 @@ class GitlabCiService < CiService
{
type:
'text'
,
name:
'project_url'
,
placeholder:
'http://ci.gitlabhq.com/projects/3'
}
{
type:
'text'
,
name:
'project_url'
,
placeholder:
'http://ci.gitlabhq.com/projects/3'
}
]
]
end
end
private
def
fork_registration_path
project_url
.
sub
(
/projects\/\d*/
,
"
#{
API_PREFIX
}
/forks"
)
end
end
end
app/services/projects/fork_service.rb
View file @
705e43bf
...
@@ -40,12 +40,18 @@ module Projects
...
@@ -40,12 +40,18 @@ module Projects
if
project
.
save
if
project
.
save
project
.
team
<<
[
@current_user
,
:master
]
project
.
team
<<
[
@current_user
,
:master
]
end
end
#Now fork the repo
#Now fork the repo
unless
gitlab_shell
.
fork_repository
(
@from_project
.
path_with_namespace
,
project
.
namespace
.
path
)
unless
gitlab_shell
.
fork_repository
(
@from_project
.
path_with_namespace
,
project
.
namespace
.
path
)
raise
'forking failed in gitlab-shell'
raise
'forking failed in gitlab-shell'
end
end
project
.
ensure_satellite_exists
project
.
ensure_satellite_exists
end
end
if
@from_project
.
gitlab_ci?
ForkRegistrationWorker
.
perform_async
(
@from_project
.
id
,
project
.
id
,
@current_user
.
private_token
)
end
rescue
=>
ex
rescue
=>
ex
project
.
errors
.
add
(
:base
,
'Fork transaction failed.'
)
project
.
errors
.
add
(
:base
,
'Fork transaction failed.'
)
project
.
destroy
project
.
destroy
...
...
app/views/projects/issues/_issue_context.html.haml
View file @
705e43bf
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
-
else
-
else
none
none
-
if
can?
(
current_user
,
:modify_issue
,
@issue
)
-
if
can?
(
current_user
,
:modify_issue
,
@issue
)
=
users_select_tag
(
'issue[assignee_id]'
,
placeholder:
'Select assignee'
,
class:
'custom-form-control js-select2 js-assignee'
,
selected:
@issue
.
assignee_id
,
null_user:
true
)
=
users_select_tag
(
'issue[assignee_id]'
,
placeholder:
'Select assignee'
,
class:
'custom-form-control js-select2 js-assignee'
,
selected:
@issue
.
assignee_id
,
null_user:
true
,
first_user:
true
)
%div
.prepend-top-20.clearfix
%div
.prepend-top-20.clearfix
.issuable-context-title
.issuable-context-title
...
...
app/views/shared/_issuable_filter.html.haml
View file @
705e43bf
...
@@ -24,11 +24,11 @@
...
@@ -24,11 +24,11 @@
.issues-other-filters
.issues-other-filters
.filter-item.inline
.filter-item.inline
=
users_select_tag
(
:assignee_id
,
selected:
params
[
:assignee_id
],
=
users_select_tag
(
:assignee_id
,
selected:
params
[
:assignee_id
],
placeholder:
'Assignee'
,
class:
'trigger-submit'
,
any_user:
true
,
null_user:
true
)
placeholder:
'Assignee'
,
class:
'trigger-submit'
,
any_user:
true
,
null_user:
true
,
first_user:
true
)
.filter-item.inline
.filter-item.inline
=
users_select_tag
(
:author_id
,
selected:
params
[
:author_id
],
=
users_select_tag
(
:author_id
,
selected:
params
[
:author_id
],
placeholder:
'Author'
,
class:
'trigger-submit'
,
any_user:
true
)
placeholder:
'Author'
,
class:
'trigger-submit'
,
any_user:
true
,
first_user:
true
)
.filter-item.inline.milestone-filter
.filter-item.inline.milestone-filter
=
select_tag
(
'milestone_id'
,
projects_milestones_options
,
class:
"select2 trigger-submit"
,
prompt:
'Milestone'
)
=
select_tag
(
'milestone_id'
,
projects_milestones_options
,
class:
"select2 trigger-submit"
,
prompt:
'Milestone'
)
...
...
app/workers/fork_registration_worker.rb
0 → 100644
View file @
705e43bf
class
ForkRegistrationWorker
include
Sidekiq
::
Worker
sidekiq_options
queue: :default
def
perform
(
from_project_id
,
to_project_id
,
private_token
)
from_project
=
Project
.
find
(
from_project_id
)
to_project
=
Project
.
find
(
to_project_id
)
from_project
.
gitlab_ci_service
.
fork_registration
(
to_project
,
private_token
)
end
end
features/project/issues/issues.feature
View file @
705e43bf
...
@@ -25,6 +25,12 @@ Feature: Project Issues
...
@@ -25,6 +25,12 @@ Feature: Project Issues
Given
I click link
"Release 0.4"
Given
I click link
"Release 0.4"
Then
I should see issue
"Release 0.4"
Then
I should see issue
"Release 0.4"
@javascript
Scenario
:
I
visit issue page
Given
I add a user to project
"Shop"
And
I click
"author"
dropdown
Then
I see current user as the first user
Scenario
:
I
submit new unassigned issue
Scenario
:
I
submit new unassigned issue
Given
I click link
"New Issue"
Given
I click link
"New Issue"
And
I submit new issue
"500 error on profile"
And
I submit new issue
"500 error on profile"
...
...
features/steps/project/issues/issues.rb
View file @
705e43bf
...
@@ -59,6 +59,18 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
...
@@ -59,6 +59,18 @@ class Spinach::Features::ProjectIssues < Spinach::FeatureSteps
click_link
"New Issue"
click_link
"New Issue"
end
end
step
'I click "author" dropdown'
do
first
(
'.ajax-users-select'
).
click
end
step
'I see current user as the first user'
do
expect
(
page
).
to
have_selector
(
'.user-result'
,
visible:
true
,
count:
4
)
users
=
page
.
all
(
'.user-name'
)
users
[
0
].
text
.
should
==
'Any'
users
[
1
].
text
.
should
==
'Unassigned'
users
[
2
].
text
.
should
==
current_user
.
name
end
step
'I submit new issue "500 error on profile"'
do
step
'I submit new issue "500 error on profile"'
do
fill_in
"issue_title"
,
with:
"500 error on profile"
fill_in
"issue_title"
,
with:
"500 error on profile"
click_button
"Submit new issue"
click_button
"Submit new issue"
...
...
features/steps/shared/project.rb
View file @
705e43bf
...
@@ -14,6 +14,13 @@ module SharedProject
...
@@ -14,6 +14,13 @@ module SharedProject
@project
.
team
<<
[
@user
,
:master
]
@project
.
team
<<
[
@user
,
:master
]
end
end
# Add another user to project "Shop"
step
'I add a user to project "Shop"'
do
@project
=
Project
.
find_by
(
name:
"Shop"
)
other_user
=
create
(
:user
,
name:
'Alpha'
)
@project
.
team
<<
[
other_user
,
:master
]
end
# Create another specific project called "Forum"
# Create another specific project called "Forum"
step
'I own project "Forum"'
do
step
'I own project "Forum"'
do
@project
=
Project
.
find_by
(
name:
"Forum"
)
@project
=
Project
.
find_by
(
name:
"Forum"
)
...
...
spec/helpers/submodule_helper_spec.rb
View file @
705e43bf
require
'spec_helper'
require
'spec_helper'
describe
SubmoduleHelper
do
describe
SubmoduleHelper
do
include
RepoHelpers
describe
'submodule links'
do
describe
'submodule links'
do
let
(
:submodule_item
)
{
double
(
id:
'hash'
,
path:
'rack'
)
}
let
(
:submodule_item
)
{
double
(
id:
'hash'
,
path:
'rack'
)
}
let
(
:config
)
{
Gitlab
.
config
.
gitlab
}
let
(
:config
)
{
Gitlab
.
config
.
gitlab
}
...
@@ -111,6 +113,39 @@ describe SubmoduleHelper do
...
@@ -111,6 +113,39 @@ describe SubmoduleHelper do
expect
(
submodule_links
(
submodule_item
)).
to
eq
([
repo
.
submodule_url_for
,
nil
])
expect
(
submodule_links
(
submodule_item
)).
to
eq
([
repo
.
submodule_url_for
,
nil
])
end
end
end
end
context
'submodules with relative links'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:project
)
{
create
(
:project
,
group:
group
)
}
before
do
self
.
instance_variable_set
(
:@project
,
project
)
end
it
'one level down'
do
commit_id
=
sample_commit
[
:id
]
result
=
relative_self_links
(
'../test.git'
,
commit_id
)
expect
(
result
).
to
eq
([
"/
#{
group
.
path
}
/test"
,
"/
#{
group
.
path
}
/test/tree/
#{
commit_id
}
"
])
end
it
'two levels down'
do
commit_id
=
sample_commit
[
:id
]
result
=
relative_self_links
(
'../../test.git'
,
commit_id
)
expect
(
result
).
to
eq
([
"/
#{
group
.
path
}
/test"
,
"/
#{
group
.
path
}
/test/tree/
#{
commit_id
}
"
])
end
it
'one level down with namespace and repo'
do
commit_id
=
sample_commit
[
:id
]
result
=
relative_self_links
(
'../foobar/test.git'
,
commit_id
)
expect
(
result
).
to
eq
([
"/foobar/test"
,
"/foobar/test/tree/
#{
commit_id
}
"
])
end
it
'two levels down with namespace and repo'
do
commit_id
=
sample_commit
[
:id
]
result
=
relative_self_links
(
'../foobar/baz/test.git'
,
commit_id
)
expect
(
result
).
to
eq
([
"/baz/test"
,
"/baz/test/tree/
#{
commit_id
}
"
])
end
end
end
end
def
stub_url
(
url
)
def
stub_url
(
url
)
...
...
spec/models/project_services/gitlab_ci_service_spec.rb
View file @
705e43bf
...
@@ -46,4 +46,25 @@ describe GitlabCiService do
...
@@ -46,4 +46,25 @@ describe GitlabCiService do
it
{
expect
(
@service
.
build_page
(
"2ab7834c"
,
'master'
)).
to
eq
(
"http://ci.gitlab.org/projects/2/refs/master/commits/2ab7834c"
)}
it
{
expect
(
@service
.
build_page
(
"2ab7834c"
,
'master'
)).
to
eq
(
"http://ci.gitlab.org/projects/2/refs/master/commits/2ab7834c"
)}
end
end
end
end
describe
"Fork registration"
do
before
do
@old_project
=
create
(
:empty_project
)
@project
=
create
(
:empty_project
)
@user
=
create
(
:user
)
@service
=
GitlabCiService
.
new
@service
.
stub
(
service_hook:
true
,
project_url:
'http://ci.gitlab.org/projects/2'
,
token:
'verySecret'
,
project:
@old_project
)
end
it
"performs http reuquest to ci"
do
stub_request
(
:post
,
"http://ci.gitlab.org/api/v1/forks"
)
@service
.
fork_registration
(
@project
,
@user
.
private_token
)
end
end
end
end
spec/services/projects/fork_service_spec.rb
View file @
705e43bf
...
@@ -40,6 +40,17 @@ describe Projects::ForkService do
...
@@ -40,6 +40,17 @@ describe Projects::ForkService do
expect
(
@to_project
.
errors
[
:base
]).
not_to
include
(
"Fork transaction failed."
)
expect
(
@to_project
.
errors
[
:base
]).
not_to
include
(
"Fork transaction failed."
)
end
end
end
end
context
'GitLab CI is enabled'
do
it
"calls fork registrator for CI"
do
@from_project
.
build_missing_services
@from_project
.
gitlab_ci_service
.
update_attributes
(
active:
true
)
expect
(
ForkRegistrationWorker
).
to
receive
(
:perform_async
)
fork_project
(
@from_project
,
@to_user
)
end
end
end
end
describe
:fork_to_namespace
do
describe
:fork_to_namespace
do
...
@@ -89,7 +100,8 @@ describe Projects::ForkService do
...
@@ -89,7 +100,8 @@ describe Projects::ForkService do
def
fork_project
(
from_project
,
user
,
fork_success
=
true
,
params
=
{})
def
fork_project
(
from_project
,
user
,
fork_success
=
true
,
params
=
{})
context
=
Projects
::
ForkService
.
new
(
from_project
,
user
,
params
)
context
=
Projects
::
ForkService
.
new
(
from_project
,
user
,
params
)
shell
=
double
(
'gitlab_shell'
).
stub
(
fork_repository:
fork_success
)
shell
=
double
(
'gitlab_shell'
)
shell
.
stub
(
fork_repository:
fork_success
)
context
.
stub
(
gitlab_shell:
shell
)
context
.
stub
(
gitlab_shell:
shell
)
context
.
execute
context
.
execute
end
end
...
...
spec/workers/fork_registration_worker_spec.rb
0 → 100644
View file @
705e43bf
require
'spec_helper'
describe
ForkRegistrationWorker
do
context
"as a resque worker"
do
it
"reponds to #perform"
do
expect
(
ForkRegistrationWorker
.
new
).
to
respond_to
(
:perform
)
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