Merge branch 'master' into stable
This commit is contained in:
commit
3fa6ed8eb2
|
@ -1,3 +1,8 @@
|
||||||
|
v 3.0.2
|
||||||
|
- Fixed gitlab:app:setup
|
||||||
|
- Fixed application error on empty project in admin area
|
||||||
|
- Restyled last push widget
|
||||||
|
|
||||||
v 3.0.1
|
v 3.0.1
|
||||||
- Fixed git over http
|
- Fixed git over http
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,22 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.btn-info {
|
||||||
|
background:#5aB9C3;
|
||||||
|
border-color: $blue_link;
|
||||||
|
color:#fff;
|
||||||
|
text-shadow: 0 1px 1px #268;
|
||||||
|
&:hover {
|
||||||
|
background:$blue_link;
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
color:#fff;
|
||||||
|
background:#29B;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&.success {
|
&.success {
|
||||||
@extend .btn-success;
|
@extend .btn-success;
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,12 @@ table {
|
||||||
border:1px solid #bbb;
|
border:1px solid #bbb;
|
||||||
width:100%;
|
width:100%;
|
||||||
|
|
||||||
|
&.low {
|
||||||
|
td {
|
||||||
|
line-height:18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
th {
|
th {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
@ -26,6 +32,8 @@ table {
|
||||||
|
|
||||||
td {
|
td {
|
||||||
border-color:#f1f1f1;
|
border-color:#f1f1f1;
|
||||||
|
line-height:28px;
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border-left:1px solid #bbb;
|
border-left:1px solid #bbb;
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,6 +101,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
td {
|
||||||
|
line-height:18px;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.diff_file_content_image {
|
.diff_file_content_image {
|
||||||
background:#eee;
|
background:#eee;
|
||||||
|
|
|
@ -97,14 +97,21 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
.event_lp {
|
.event_lp {
|
||||||
@extend .ui-box;
|
|
||||||
color:#777;
|
color:#777;
|
||||||
margin-bottom:20px;
|
padding:10px;
|
||||||
padding:8px;
|
|
||||||
@include border-radius(4px);
|
|
||||||
min-height:22px;
|
min-height:22px;
|
||||||
|
border-left: 5px solid #5AB9C3;
|
||||||
|
margin-bottom:20px;
|
||||||
|
background:#f9f9f9;
|
||||||
|
|
||||||
.avatar {
|
.avatar {
|
||||||
width:24px;
|
width:24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn-new-mr {
|
||||||
|
@extend .btn-info;
|
||||||
|
@extend .small;
|
||||||
|
@extend .right;
|
||||||
|
margin: -3px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@
|
||||||
padding: 2px 10px;
|
padding: 2px 10px;
|
||||||
}
|
}
|
||||||
td {
|
td {
|
||||||
|
line-height:20px;
|
||||||
background:#fafafa;
|
background:#fafafa;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ class Admin::GroupsController < AdminController
|
||||||
def destroy
|
def destroy
|
||||||
@group.destroy
|
@group.destroy
|
||||||
|
|
||||||
redirect_to groups_url, notice: 'Group was successfully deleted.'
|
redirect_to admin_groups_path, notice: 'Group was successfully deleted.'
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -137,6 +137,8 @@ module Repository
|
||||||
|
|
||||||
def has_commits?
|
def has_commits?
|
||||||
!!commit
|
!!commit
|
||||||
|
rescue Grit::NoSuchPathError
|
||||||
|
false
|
||||||
end
|
end
|
||||||
|
|
||||||
def root_ref
|
def root_ref
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
= render 'admin/shared/projects_head'
|
= render 'admin/shared/projects_head'
|
||||||
%h3.page_title
|
%h3.page_title
|
||||||
Groups
|
Groups
|
||||||
|
%small
|
||||||
|
allows you to keep projects organized.
|
||||||
|
Use groups for uniting related projects.
|
||||||
|
|
||||||
= link_to 'New Group', new_admin_group_path, class: "btn small right"
|
= link_to 'New Group', new_admin_group_path, class: "btn small right"
|
||||||
%br
|
%br
|
||||||
= form_tag admin_groups_path, method: :get, class: 'form-inline' do
|
= form_tag admin_groups_path, method: :get, class: 'form-inline' do
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
%i.icon-edit
|
%i.icon-edit
|
||||||
Edit
|
Edit
|
||||||
|
|
||||||
- if !@admin_project.has_post_receive_file? && @admin_project.commit
|
- if !@admin_project.has_post_receive_file? && @admin_project.has_commits?
|
||||||
%br
|
%br
|
||||||
.alert.alert-error
|
.alert.alert-error
|
||||||
%span
|
%span
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
- if @projects.any?
|
- if @projects.any?
|
||||||
.projects
|
.projects
|
||||||
.activities.span8
|
.activities.span8
|
||||||
|
= render "events/event_last_push", event: @last_push
|
||||||
= render 'shared/no_ssh'
|
= render 'shared/no_ssh'
|
||||||
- if @events.any?
|
- if @events.any?
|
||||||
.content_list= render @events
|
.content_list= render @events
|
||||||
|
@ -8,7 +9,6 @@
|
||||||
%h4.nothing_here_message Projects activity will be displayed here
|
%h4.nothing_here_message Projects activity will be displayed here
|
||||||
.loading.hide
|
.loading.hide
|
||||||
.side
|
.side
|
||||||
= render "events/event_last_push", event: @last_push
|
|
||||||
- if @groups.present?
|
- if @groups.present?
|
||||||
= render "groups", groups: @groups
|
= render "groups", groups: @groups
|
||||||
= render "projects", projects: @projects
|
= render "projects", projects: @projects
|
||||||
|
|
|
@ -1,13 +1,15 @@
|
||||||
- if show_last_push_widget?(event)
|
- if show_last_push_widget?(event)
|
||||||
.event_lp
|
.event_lp
|
||||||
%div
|
= image_tag "event_push.png"
|
||||||
= image_tag gravatar_icon(event.author_email), class: "avatar"
|
|
||||||
%span You pushed to
|
%span You pushed to
|
||||||
= event.ref_type
|
|
||||||
= link_to project_commits_path(event.project, event.ref_name) do
|
= link_to project_commits_path(event.project, event.ref_name) do
|
||||||
%strong= truncate(event.ref_name, length: 28)
|
%strong= truncate(event.ref_name, length: 28)
|
||||||
at
|
at
|
||||||
%strong= link_to event.project.name, event.project
|
%strong= link_to event.project.name, event.project
|
||||||
|
%span
|
||||||
|
= time_ago_in_words(event.created_at)
|
||||||
|
ago.
|
||||||
|
|
||||||
= link_to new_mr_path_from_push_event(event), title: "New Merge Request", class: "btn very_small" do
|
= link_to new_mr_path_from_push_event(event), title: "New Merge Request", class: "btn btn-new-mr" do
|
||||||
Create Merge Request
|
Create Merge Request
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.projects
|
.projects
|
||||||
.activities.span8
|
.activities.span8
|
||||||
|
= render "events/event_last_push", event: @last_push
|
||||||
= link_to dashboard_path, class: 'btn very_small' do
|
= link_to dashboard_path, class: 'btn very_small' do
|
||||||
← To dashboard
|
← To dashboard
|
||||||
|
|
||||||
|
@ -12,7 +13,6 @@
|
||||||
%h4.nothing_here_message Projects activity will be displayed here
|
%h4.nothing_here_message Projects activity will be displayed here
|
||||||
.loading.hide
|
.loading.hide
|
||||||
.side
|
.side
|
||||||
= render "events/event_last_push", event: @last_push
|
|
||||||
= render "projects", projects: @projects
|
= render "projects", projects: @projects
|
||||||
%div
|
%div
|
||||||
%span.rss-icon
|
%span.rss-icon
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
= link_to key_path(key) do
|
= link_to key_path(key) do
|
||||||
%p
|
|
||||||
%strong= key.title
|
%strong= key.title
|
||||||
%td
|
%td
|
||||||
%span.cgray
|
%span.cgray
|
||||||
|
|
|
@ -10,8 +10,7 @@
|
||||||
%tr
|
%tr
|
||||||
%td
|
%td
|
||||||
%a{href: note.attachment.url}
|
%a{href: note.attachment.url}
|
||||||
= image_tag gravatar_icon(note.author_email), class: "left", width: 16
|
= image_tag gravatar_icon(note.author_email), class: "avatar s24"
|
||||||
|
|
||||||
= note.attachment_identifier
|
= note.attachment_identifier
|
||||||
%td
|
%td
|
||||||
Added
|
Added
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
- grouper_project_members(@project).each do |access, members|
|
- grouper_project_members(@project).each do |access, members|
|
||||||
%table
|
%table.low
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
%th.span7
|
%th.span7
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended to check this file into your version control system.
|
# It's strongly recommended to check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(:version => 20121002151033) do
|
ActiveRecord::Schema.define(:version => 20121009205010) do
|
||||||
|
|
||||||
create_table "events", :force => true do |t|
|
create_table "events", :force => true do |t|
|
||||||
t.string "target_type"
|
t.string "target_type"
|
||||||
|
|
|
@ -157,6 +157,10 @@ Add your user to the `git` group:
|
||||||
|
|
||||||
sudo usermod -a -G git gitlab
|
sudo usermod -a -G git gitlab
|
||||||
|
|
||||||
|
Add `git` user to `gitlab` group:
|
||||||
|
|
||||||
|
sudo usermod -a -G gitlab git
|
||||||
|
|
||||||
Generate key:
|
Generate key:
|
||||||
|
|
||||||
sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
|
sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa
|
||||||
|
|
10
features/admin/groups.feature
Normal file
10
features/admin/groups.feature
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
Feature: Admin Groups
|
||||||
|
Background:
|
||||||
|
Given I sign in as an admin
|
||||||
|
And I visit admin groups page
|
||||||
|
|
||||||
|
Scenario: Create a group
|
||||||
|
When I click new group link
|
||||||
|
And submit form with new group info
|
||||||
|
Then I should be redirected to group page
|
||||||
|
And I should see newly created group
|
|
@ -7,3 +7,13 @@ Feature: Groups
|
||||||
When I visit group page
|
When I visit group page
|
||||||
Then I should see projects list
|
Then I should see projects list
|
||||||
And I should see projects activity feed
|
And I should see projects activity feed
|
||||||
|
|
||||||
|
Scenario: I should see group issues list
|
||||||
|
Given project from group has issues assigned to me
|
||||||
|
When I visit group issues page
|
||||||
|
Then I should see issues from this group assigned to me
|
||||||
|
|
||||||
|
Scenario: I should see group merge requests list
|
||||||
|
Given project from group has merge requests assigned to me
|
||||||
|
When I visit group merge requests page
|
||||||
|
Then I should see merge requests from this group assigned to me
|
||||||
|
|
24
features/steps/admin/admin_groups.rb
Normal file
24
features/steps/admin/admin_groups.rb
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
class AdminGroups < Spinach::FeatureSteps
|
||||||
|
include SharedAuthentication
|
||||||
|
include SharedPaths
|
||||||
|
include SharedActiveTab
|
||||||
|
|
||||||
|
When 'I click new group link' do
|
||||||
|
click_link "New Group"
|
||||||
|
end
|
||||||
|
|
||||||
|
And 'submit form with new group info' do
|
||||||
|
fill_in 'group_name', :with => 'gitlab'
|
||||||
|
fill_in 'group_code', :with => 'gitlab'
|
||||||
|
click_button "Save group"
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'I should see newly created group' do
|
||||||
|
page.should have_content "Group: gitlab"
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'I should be redirected to group page' do
|
||||||
|
current_path.should == admin_group_path(Group.last)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Dashboard < Spinach::FeatureSteps
|
||||||
end
|
end
|
||||||
|
|
||||||
Then 'I should see last push widget' do
|
Then 'I should see last push widget' do
|
||||||
page.should have_content "You pushed to branch new_design"
|
page.should have_content "You pushed to new_design"
|
||||||
page.should have_link "Create Merge Request"
|
page.should have_link "Create Merge Request"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,6 @@ class Groups < Spinach::FeatureSteps
|
||||||
include SharedAuthentication
|
include SharedAuthentication
|
||||||
include SharedPaths
|
include SharedPaths
|
||||||
|
|
||||||
When 'I visit group page' do
|
|
||||||
visit group_path(current_group)
|
|
||||||
end
|
|
||||||
|
|
||||||
Then 'I should see projects list' do
|
Then 'I should see projects list' do
|
||||||
current_user.projects.each do |project|
|
current_user.projects.each do |project|
|
||||||
page.should have_link project.name
|
page.should have_link project.name
|
||||||
|
@ -24,9 +20,43 @@ class Groups < Spinach::FeatureSteps
|
||||||
page.should have_content 'closed issue'
|
page.should have_content 'closed issue'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Then 'I should see issues from this group assigned to me' do
|
||||||
|
assigned_to_me(:issues).each do |issue|
|
||||||
|
page.should have_content issue.title
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Then 'I should see merge requests from this group assigned to me' do
|
||||||
|
assigned_to_me(:merge_requests).each do |issue|
|
||||||
|
page.should have_content issue.title
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Given 'project from group has issues assigned to me' do
|
||||||
|
create :issue,
|
||||||
|
project: project,
|
||||||
|
assignee: current_user,
|
||||||
|
author: current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
Given 'project from group has merge requests assigned to me' do
|
||||||
|
create :merge_request,
|
||||||
|
project: project,
|
||||||
|
assignee: current_user,
|
||||||
|
author: current_user
|
||||||
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def current_group
|
def current_group
|
||||||
@group ||= Group.first
|
@group ||= Group.first
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def project
|
||||||
|
current_group.projects.first
|
||||||
|
end
|
||||||
|
|
||||||
|
def assigned_to_me key
|
||||||
|
project.send(key).where(assignee_id: current_user.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,6 +5,22 @@ module SharedPaths
|
||||||
visit new_project_path
|
visit new_project_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# Group
|
||||||
|
# ----------------------------------------
|
||||||
|
|
||||||
|
When 'I visit group page' do
|
||||||
|
visit group_path(current_group)
|
||||||
|
end
|
||||||
|
|
||||||
|
When 'I visit group issues page' do
|
||||||
|
visit issues_group_path(current_group)
|
||||||
|
end
|
||||||
|
|
||||||
|
When 'I visit group merge requests page' do
|
||||||
|
visit merge_requests_group_path(current_group)
|
||||||
|
end
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# Dashboard
|
# Dashboard
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
@ -85,6 +101,10 @@ module SharedPaths
|
||||||
visit admin_resque_path
|
visit admin_resque_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
And 'I visit admin groups page' do
|
||||||
|
visit admin_groups_path
|
||||||
|
end
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# Generic Project
|
# Generic Project
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
|
Loading…
Reference in a new issue