Updated readme, Roles in progress
This commit is contained in:
parent
37224dc9c1
commit
dac7c44ab3
15 changed files with 165 additions and 67 deletions
Binary file not shown.
Before Width: | Height: | Size: 96 KiB |
Binary file not shown.
Before Width: | Height: | Size: 54 KiB |
|
@ -6,6 +6,10 @@ a {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.vlink {
|
||||||
|
color: $link_color !important;
|
||||||
|
}
|
||||||
|
|
||||||
.pills .active a {
|
.pills .active a {
|
||||||
background-color: #474D57;
|
background-color: #474D57;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +31,7 @@ a {
|
||||||
.cgray { color:gray; }
|
.cgray { color:gray; }
|
||||||
.cred { color:#D12F19; }
|
.cred { color:#D12F19; }
|
||||||
.cgreen { color:#44aa22; }
|
.cgreen { color:#44aa22; }
|
||||||
|
.cblack { color:#111; }
|
||||||
|
|
||||||
/** COMMON STYLES **/
|
/** COMMON STYLES **/
|
||||||
.left {
|
.left {
|
||||||
|
@ -259,3 +264,5 @@ img.lil_av {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.help li { color:#111 }
|
||||||
|
|
|
@ -6,6 +6,8 @@ class ProtectedBranchesController < ApplicationController
|
||||||
before_filter :authorize_read_project!
|
before_filter :authorize_read_project!
|
||||||
before_filter :require_non_empty_project
|
before_filter :require_non_empty_project
|
||||||
|
|
||||||
|
before_filter :authorize_admin_project!, :only => [:destroy, :create]
|
||||||
|
|
||||||
layout "project"
|
layout "project"
|
||||||
|
|
||||||
def index
|
def index
|
||||||
|
@ -19,5 +21,11 @@ class ProtectedBranchesController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
|
@project.protected_branches.find(params[:id]).destroy
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to project_protected_branches_path }
|
||||||
|
format.js { render :nothing => true }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -34,7 +34,9 @@ module ProjectsHelper
|
||||||
|
|
||||||
def repository_tab_class
|
def repository_tab_class
|
||||||
if controller.controller_name == "repositories" ||
|
if controller.controller_name == "repositories" ||
|
||||||
controller.controller_name == "hooks"
|
controller.controller_name == "hooks" ||
|
||||||
|
controller.controller_name == "protected_branches" ||
|
||||||
|
controller.controller_name == "deploy_keys"
|
||||||
"current"
|
"current"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,4 +1,8 @@
|
||||||
class UsersProject < ActiveRecord::Base
|
class UsersProject < ActiveRecord::Base
|
||||||
|
REPORTER = 21
|
||||||
|
DEVELOPER = 22
|
||||||
|
MASTER = 33
|
||||||
|
|
||||||
belongs_to :user
|
belongs_to :user
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
|
|
||||||
|
@ -41,6 +45,18 @@ class UsersProject < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.access_roles
|
||||||
|
{
|
||||||
|
"Reporter" => REPORTER,
|
||||||
|
"Developer" => DEVELOPER,
|
||||||
|
"Master" => MASTER
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def role_access
|
||||||
|
"#{project_access}#{repo_access}"
|
||||||
|
end
|
||||||
|
|
||||||
def update_repository
|
def update_repository
|
||||||
Gitlabhq::GitHost.system.new.configure do |c|
|
Gitlabhq::GitHost.system.new.configure do |c|
|
||||||
c.update_project(project.path, project)
|
c.update_project(project.path, project)
|
||||||
|
|
|
@ -1,43 +1,17 @@
|
||||||
- bash_lexer = Pygments::Lexer[:bash]
|
%h3
|
||||||
%div.help_content
|
Gitlabhq
|
||||||
%h2
|
%span.right v2.2
|
||||||
Gitlabhq
|
%hr
|
||||||
%span.right v2.1
|
%h4 Self Hosted Git Management
|
||||||
%hr
|
%h4 Fast, secure and stable solution based on Ruby on Rails & Gitolite.
|
||||||
%h3 Self Hosted Git Management
|
|
||||||
%h3 Fast, secure and stable solution based on Ruby on Rails & Gitolite.
|
|
||||||
|
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
.menu
|
%h3 Help
|
||||||
%h3= link_to "Workflow", "#", :class => "active"
|
|
||||||
|
|
||||||
.content
|
%ol
|
||||||
%h3 Clone project
|
%li
|
||||||
.bash
|
= link_to "Workflow", help_workflow_path
|
||||||
%pre
|
|
||||||
git clone git@example.com:project-name.git
|
|
||||||
|
|
||||||
%h3 Create branch with your feature
|
%li
|
||||||
.bash
|
= link_to "Permissions", help_permissions_path
|
||||||
%pre
|
|
||||||
git checkout -b $feature_name
|
|
||||||
|
|
||||||
%h3 Write code. Commit changes
|
|
||||||
.bash
|
|
||||||
%pre
|
|
||||||
git commit -am "My feature is ready"
|
|
||||||
|
|
||||||
%h3 Push your branch to gitlabhq
|
|
||||||
.bash
|
|
||||||
%pre
|
|
||||||
git push origin $feature_name
|
|
||||||
|
|
||||||
%h3 Review your code
|
|
||||||
.bash= image_tag "help_commit.png", :width => 600
|
|
||||||
|
|
||||||
|
|
||||||
%h3 Open a merge request
|
|
||||||
.bash= image_tag "help_merge_request.png", :width => 600
|
|
||||||
|
|
||||||
%h3 Your team lead will review code & merge it to main branch
|
|
||||||
|
|
27
app/views/help/permissions.html.haml
Normal file
27
app/views/help/permissions.html.haml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
%h3 Permissions
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%h4 Reporter
|
||||||
|
%ul
|
||||||
|
%li Pull project code
|
||||||
|
%li Create new issue
|
||||||
|
%li Create new merge request
|
||||||
|
%li Write on project wall
|
||||||
|
|
||||||
|
|
||||||
|
%h4 Developer
|
||||||
|
%ul
|
||||||
|
%li Pull project code
|
||||||
|
%li Create new branches
|
||||||
|
%li Push to non-protected branches
|
||||||
|
%li Remove non-protected branches
|
||||||
|
%li Add tags
|
||||||
|
%li Create new issue
|
||||||
|
%li Create new merge request
|
||||||
|
%li Write on project wall
|
||||||
|
|
||||||
|
%h4 Master
|
||||||
|
%ul
|
||||||
|
%li Full repository access
|
||||||
|
%li Full project access
|
||||||
|
%li Add new team members
|
38
app/views/help/workflow.html.haml
Normal file
38
app/views/help/workflow.html.haml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
- bash_lexer = Pygments::Lexer[:bash]
|
||||||
|
%h3 Workflow
|
||||||
|
%hr
|
||||||
|
|
||||||
|
%ol.help
|
||||||
|
%li
|
||||||
|
%p Clone project
|
||||||
|
.bash
|
||||||
|
%pre
|
||||||
|
git clone git@example.com:project-name.git
|
||||||
|
|
||||||
|
%li
|
||||||
|
%p Create branch with your feature
|
||||||
|
.bash
|
||||||
|
%pre
|
||||||
|
git checkout -b $feature_name
|
||||||
|
|
||||||
|
%li
|
||||||
|
%p Write code. Commit changes
|
||||||
|
.bash
|
||||||
|
%pre
|
||||||
|
git commit -am "My feature is ready"
|
||||||
|
|
||||||
|
%li
|
||||||
|
%p Push your branch to gitlabhq
|
||||||
|
.bash
|
||||||
|
%pre
|
||||||
|
git push origin $feature_name
|
||||||
|
|
||||||
|
%li
|
||||||
|
%p Review your code on Commits page
|
||||||
|
|
||||||
|
%li
|
||||||
|
%p Create a merge request
|
||||||
|
|
||||||
|
%li
|
||||||
|
%p Your team lead will review code & merge it to main branch
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
.alert-message.block-message
|
.alert-message.block-message
|
||||||
= link_to new_project_team_member_path(@project), :class => "btn small right", :title => "New Team Member" do
|
= link_to new_project_team_member_path(@project), :class => "btn small right", :title => "New Team Member" do
|
||||||
New Team Member
|
New Team Member
|
||||||
Manage project team from this page.
|
%p Ream more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"}
|
||||||
%br
|
%p To open team member profile - click on avatar.
|
||||||
To open team member profile - click on avatar.
|
|
||||||
|
|
||||||
= render :partial => "team", :locals => {:project => @project}
|
= render :partial => "team", :locals => {:project => @project}
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,22 @@
|
||||||
= render "repositories/branches_head"
|
= render "repositories/branches_head"
|
||||||
|
|
||||||
= form_for [@project, @protected_branch] do |f|
|
.alert-message.block-message
|
||||||
-if @protected_branch.errors.any?
|
%p Protected branches designed to prevent push for all except #{link_to "masters", help_permissions_path, :class => "vlink"}.
|
||||||
.alert-message.block-message.error
|
%p This ability allows:
|
||||||
%ul
|
%ul
|
||||||
- @protected_branch.errors.full_messages.each do |msg|
|
%li keep stable branches secured
|
||||||
%li= msg
|
%li forced code review before merge to protected branches
|
||||||
|
%p Ream more about project permissions #{link_to "here", help_permissions_path, :class => "vlink"}
|
||||||
|
|
||||||
.clearfix
|
|
||||||
= f.label :name
|
|
||||||
.input= f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , { :include_blank => "Select branch" }, { :style => "width:300px" })
|
|
||||||
.actions
|
|
||||||
= f.submit 'Add', :class => "primary btn"
|
|
||||||
|
|
||||||
|
|
||||||
- unless @branches.empty?
|
- unless @branches.empty?
|
||||||
%table
|
%table.zebra-striped
|
||||||
%thead
|
%thead
|
||||||
%tr
|
%tr
|
||||||
%th Name
|
%th Name
|
||||||
%th Last commit
|
%th Last commit
|
||||||
|
%th
|
||||||
%tbody
|
%tbody
|
||||||
- @branches.each do |branch|
|
- @branches.each do |branch|
|
||||||
%tr
|
%tr
|
||||||
|
@ -33,6 +30,25 @@
|
||||||
= truncate branch.commit.id.to_s, :length => 10
|
= truncate branch.commit.id.to_s, :length => 10
|
||||||
= time_ago_in_words(branch.commit.committed_date)
|
= time_ago_in_words(branch.commit.committed_date)
|
||||||
ago
|
ago
|
||||||
|
%td
|
||||||
|
- if can? current_user, :admin_project, @project
|
||||||
|
= link_to 'Unprotect', [@project, branch], :confirm => 'Are you sure?', :method => :delete, :class => "danger btn small"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
- if can? current_user, :admin_project, @project
|
||||||
|
= form_for [@project, @protected_branch] do |f|
|
||||||
|
-if @protected_branch.errors.any?
|
||||||
|
.alert-message.block-message.error
|
||||||
|
%ul
|
||||||
|
- @protected_branch.errors.full_messages.each do |msg|
|
||||||
|
%li= msg
|
||||||
|
|
||||||
|
.clearfix
|
||||||
|
= f.label :name
|
||||||
|
.input= f.select(:name, @project.open_branches.map { |br| [br.name, br.name] } , { :include_blank => "Select branch" }, { :style => "width:300px" })
|
||||||
|
.actions
|
||||||
|
= f.submit 'Add', :class => "primary btn"
|
||||||
|
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
|
|
|
@ -6,4 +6,4 @@
|
||||||
%li{:class => ("active" if current_page?(project_protected_branches_path(@project)))}
|
%li{:class => ("active" if current_page?(project_protected_branches_path(@project)))}
|
||||||
= link_to project_protected_branches_path(@project) do
|
= link_to project_protected_branches_path(@project) do
|
||||||
Protected
|
Protected
|
||||||
|
%hr
|
||||||
|
|
|
@ -11,13 +11,20 @@
|
||||||
= f.label :user_id, "Name"
|
= f.label :user_id, "Name"
|
||||||
.input= f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, { :style => "width:300px" })
|
.input= f.select(:user_id, User.not_in_project(@project).all.collect {|p| [ p.name, p.id ] }, { :include_blank => "Select user" }, { :style => "width:300px" })
|
||||||
|
|
||||||
.clearfix
|
|
||||||
= f.label :project_access, "Project Access"
|
|
||||||
.input= f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, :class => "project-access-select"
|
|
||||||
|
|
||||||
.clearfix
|
.clearfix
|
||||||
= f.label :repo_access, "Repository Access"
|
= f.label :project_access, "Project Access"
|
||||||
.input= f.select :repo_access, options_for_select(Repository.access_options, @team_member.repo_access), {}, :class => "repo-access-select"
|
.input= f.select :_project_access, options_for_select(UsersProject.access_roles, @team_member.role_access), {}, :class => "project-access-select"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-#.clearfix
|
||||||
|
-#= f.label :project_access, "Project Access"
|
||||||
|
-#.input= f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, :class => "project-access-select"
|
||||||
|
|
||||||
|
-#.clearfix
|
||||||
|
-#= f.label :repo_access, "Repository Access"
|
||||||
|
-#.input= f.select :repo_access, options_for_select(Repository.access_options, @team_member.repo_access), {}, :class => "repo-access-select"
|
||||||
|
|
||||||
.actions
|
.actions
|
||||||
= f.submit 'Save', :class => "btn primary"
|
= f.submit 'Save', :class => "btn primary"
|
||||||
|
@ -30,5 +37,6 @@
|
||||||
|
|
||||||
:javascript
|
:javascript
|
||||||
$('select#team_member_user_id').chosen();
|
$('select#team_member_user_id').chosen();
|
||||||
$('select#team_member_repo_access').chosen();
|
$('select#team_member__project_access').chosen();
|
||||||
$('select#team_member_project_access').chosen();
|
//$('select#team_member_repo_access').chosen();
|
||||||
|
//$('select#team_member_project_access').chosen();
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
|
|
||||||
.span3
|
.span3
|
||||||
= form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f|
|
= form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f|
|
||||||
= f.select :project_access, options_for_select(Project.access_options, member.project_access), {}, :class => "medium project-access-select", :disabled => !allow_admin
|
= f.select :_project_access, options_for_select(UsersProject.access_roles, member.role_access), {}, :class => "medium project-access-select", :disabled => !allow_admin
|
||||||
.span3
|
-#.span3
|
||||||
= form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f|
|
-#= form_for(member, :as => :team_member, :url => project_team_member_path(@project, member)) do |f|
|
||||||
= f.select :repo_access, options_for_select(Repository.access_options, member.repo_access), {}, :class => "medium repo-access-select", :disabled => !allow_admin
|
-#= f.select :repo_access, options_for_select(Repository.access_options, member.repo_access), {}, :class => "medium repo-access-select", :disabled => !allow_admin
|
||||||
- if @project.owner == user
|
- if @project.owner == user
|
||||||
%span.label Project Owner
|
%span.label Project Owner
|
||||||
|
|
|
@ -5,6 +5,8 @@ Gitlab::Application.routes.draw do
|
||||||
mount Resque::Server.new, at: '/info/resque'
|
mount Resque::Server.new, at: '/info/resque'
|
||||||
|
|
||||||
get 'help' => 'help#index'
|
get 'help' => 'help#index'
|
||||||
|
get 'help/permissions' => 'help#permissions'
|
||||||
|
get 'help/workflow' => 'help#workflow'
|
||||||
|
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
resources :users do
|
resources :users do
|
||||||
|
|
Loading…
Add table
Reference in a new issue