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.
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 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)
- 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)
- Set Application controller default URL options to ensure all url_for calls are consistent (Stan Hu)
- Allow HTML tags in Markdown input
...
...
@@ -64,6 +66,7 @@ v 7.10.0 (unreleased)
- Fixed link paths for HTTP and SSH on the admin project view (Jeremy Maziarz)
- Fix and improve help rendering (Sullivan Sénéchal)
- 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
- Contains no changes
...
...
app/assets/javascripts/users_select.js.coffee
View file @
705e43bf
...
...
@@ -8,6 +8,7 @@ class @UsersSelect
@
groupId
=
$
(
select
).
data
(
'group-id'
)
showNullUser
=
$
(
select
).
data
(
'null-user'
)
showAnyUser
=
$
(
select
).
data
(
'any-user'
)
firstUser
=
$
(
select
).
data
(
'first-user'
)
$
(
select
).
select2
placeholder
:
"Search for a user"
...
...
@@ -32,6 +33,13 @@ class @UsersSelect
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
data
.
results
.
unshift
(
nullUser
)
if
showAnyUser
...
...
app/helpers/selects_helper.rb
View file @
705e43bf
...
...
@@ -8,12 +8,14 @@ module SelectsHelper
null_user
=
opts
[
:null_user
]
||
false
any_user
=
opts
[
:any_user
]
||
false
first_user
=
opts
[
:first_user
]
&&
current_user
?
current_user
.
username
:
false
html
=
{
class:
css_class
,
'data-placeholder'
=>
placeholder
,
'data-null-user'
=>
null_user
,
'data-any-user'
=>
any_user
,
'data-first-user'
=>
first_user
}
unless
opts
[
:scope
]
==
:all
...
...
app/helpers/submodule_helper.rb
View file @
705e43bf
...
...
@@ -53,15 +53,22 @@ module SubmoduleHelper
end
def
relative_self_links
(
url
,
commit
)
if
url
.
scan
(
/(\.\.\/)/
).
size
==
2
base
=
url
[
/([^\/]*\/[^\/]*)\.git/
,
1
]
else
base
=
[
@project
.
group
.
path
,
'/'
,
url
[
/([^\/]*)\.git/
,
1
]
].
join
(
''
)
# Map relative links to a namespace and project
# For example:
# ../bar.git -> same namespace, repo bar
# ../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
[
namespace_project_path
(
base
.
namespace
,
base
),
namespace_project_tree_path
(
base
.
namespace
,
base
,
commit
)
namespace_project_path
(
namespace
,
base
),
namespace_project_tree_path
(
namespace
,
base
,
commit
)
]
end
end
app/models/project_services/gitlab_ci_service.rb
View file @
705e43bf
...
...
@@ -18,6 +18,8 @@
#
class
GitlabCiService
<
CiService
API_PREFIX
=
"api/v1"
prop_accessor
:project_url
,
:token
validates
:project_url
,
presence:
true
,
if: :activated?
validates
:token
,
presence:
true
,
if: :activated?
...
...
@@ -59,6 +61,26 @@ class GitlabCiService < CiService
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
)
response
=
get_ci_build
(
sha
,
ref
)
...
...
@@ -97,4 +119,10 @@ class GitlabCiService < CiService
{
type:
'text'
,
name:
'project_url'
,
placeholder:
'http://ci.gitlabhq.com/projects/3'
}
]
end
private
def
fork_registration_path
project_url
.
sub
(
/projects\/\d*/
,
"
#{
API_PREFIX
}
/forks"
)
end
end
app/services/projects/fork_service.rb
View file @
705e43bf
...
...
@@ -40,12 +40,18 @@ module Projects
if
project
.
save
project
.
team
<<
[
@current_user
,
:master
]
end
#Now fork the repo
unless
gitlab_shell
.
fork_repository
(
@from_project
.
path_with_namespace
,
project
.
namespace
.
path
)
raise
'forking failed in gitlab-shell'
end
project
.
ensure_satellite_exists
end
if
@from_project
.
gitlab_ci?
ForkRegistrationWorker
.
perform_async
(
@from_project
.
id
,
project
.
id
,
@current_user
.
private_token
)
end
rescue
=>
ex
project
.
errors
.
add
(
:base
,
'Fork transaction failed.'
)
project
.
destroy
...
...
app/views/projects/issues/_issue_context.html.haml
View file @
705e43bf
...
...
@@ -8,7 +8,7 @@
-
else
none
-
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
.issuable-context-title
...
...
app/views/shared/_issuable_filter.html.haml
View file @
705e43bf
...
...
@@ -24,11 +24,11 @@
.issues-other-filters
.filter-item.inline
=
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
=
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
=
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
Given
I click link
"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
Given
I click link
"New Issue"
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
click_link
"New Issue"
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
fill_in
"issue_title"
,
with:
"500 error on profile"
click_button
"Submit new issue"
...
...
features/steps/shared/project.rb
View file @
705e43bf
...
...
@@ -14,6 +14,13 @@ module SharedProject
@project
.
team
<<
[
@user
,
:master
]
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"
step
'I own project "Forum"'
do
@project
=
Project
.
find_by
(
name:
"Forum"
)
...
...
spec/helpers/submodule_helper_spec.rb
View file @
705e43bf
require
'spec_helper'
describe
SubmoduleHelper
do
include
RepoHelpers
describe
'submodule links'
do
let
(
:submodule_item
)
{
double
(
id:
'hash'
,
path:
'rack'
)
}
let
(
:config
)
{
Gitlab
.
config
.
gitlab
}
...
...
@@ -111,6 +113,39 @@ describe SubmoduleHelper do
expect
(
submodule_links
(
submodule_item
)).
to
eq
([
repo
.
submodule_url_for
,
nil
])
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
def
stub_url
(
url
)
...
...
spec/models/project_services/gitlab_ci_service_spec.rb
View file @
705e43bf
...
...
@@ -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"
)}
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
spec/services/projects/fork_service_spec.rb
View file @
705e43bf
...
...
@@ -40,6 +40,17 @@ describe Projects::ForkService do
expect
(
@to_project
.
errors
[
:base
]).
not_to
include
(
"Fork transaction failed."
)
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
describe
:fork_to_namespace
do
...
...
@@ -89,7 +100,8 @@ describe Projects::ForkService do
def
fork_project
(
from_project
,
user
,
fork_success
=
true
,
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
.
execute
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