summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Gemfile3
-rw-r--r--Gemfile.lock4
-rw-r--r--VERSION2
-rw-r--r--app/assets/javascripts/commits.js.coffee6
-rw-r--r--app/assets/javascripts/main.js.coffee4
-rw-r--r--app/assets/javascripts/project.js.coffee10
-rw-r--r--app/contexts/issues/bulk_update_context.rb36
-rw-r--r--app/contexts/issues/list_context.rb32
-rw-r--r--app/contexts/issues_bulk_update_context.rb24
-rw-r--r--app/contexts/issues_list_context.rb30
-rw-r--r--app/controllers/issues_controller.rb4
-rw-r--r--app/models/gitlab_ci_service.rb8
-rw-r--r--app/views/projects/_errors.html.haml4
-rw-r--r--app/views/projects/_form.html.haml151
-rw-r--r--app/views/projects/_new_form.html.haml48
-rw-r--r--app/views/projects/create.js.haml6
-rw-r--r--app/views/projects/edit.html.haml153
-rw-r--r--app/views/projects/new.html.haml56
-rw-r--r--app/views/projects/show.html.haml5
-rw-r--r--app/views/projects/update.js.haml5
-rw-r--r--lib/tasks/gitlab/check.rake3
21 files changed, 313 insertions, 281 deletions
diff --git a/Gemfile b/Gemfile
index 787a3813f81..2bc55bfa1cd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -22,7 +22,8 @@ gem 'omniauth-twitter'
gem 'omniauth-github'
# Extracting information from a git repository
-gem 'gitlab_git', '~> 1.2.0'
+# Provide access to Gitlab::Git library
+gem 'gitlab_git', '~> 1.2.1'
# Ruby/Rack Git Smart-HTTP Server Handler
gem 'gitlab-grack', '~> 1.0.0', require: 'grack'
diff --git a/Gemfile.lock b/Gemfile.lock
index 279c14dbb47..93798439d8c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -168,7 +168,7 @@ GEM
gitlab-pygments.rb (0.3.2)
posix-spawn (~> 0.3.6)
yajl-ruby (~> 1.1.0)
- gitlab_git (1.2.0)
+ gitlab_git (1.2.1)
activesupport (~> 3.2.13)
github-linguist (~> 2.3.4)
gitlab-grit (~> 2.5.1)
@@ -512,7 +512,7 @@ DEPENDENCIES
gitlab-gollum-lib (~> 1.0.0)
gitlab-grack (~> 1.0.0)
gitlab-pygments.rb (~> 0.3.2)
- gitlab_git (~> 1.2.0)
+ gitlab_git (~> 1.2.1)
gitlab_meta (= 5.0)
gitlab_omniauth-ldap (= 1.0.2)
gon
diff --git a/VERSION b/VERSION
index ffee65a410e..803e4a4f372 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5.2.0.pre
+5.2.0.beta1
diff --git a/app/assets/javascripts/commits.js.coffee b/app/assets/javascripts/commits.js.coffee
index 47d6fcf8089..ab8eaa63228 100644
--- a/app/assets/javascripts/commits.js.coffee
+++ b/app/assets/javascripts/commits.js.coffee
@@ -23,7 +23,7 @@ class CommitsList
@data.offset = limit
this.initLoadMore()
- this.showProgress();
+ this.showProgress()
@getOld: ->
this.showProgress()
@@ -41,7 +41,7 @@ class CommitsList
else
@disable = true
- @initLoadMore: ->
+ @initLoadMore: ->
$(document).endlessScroll
bottomPixels: 400
fireDelay: 1000
@@ -51,4 +51,4 @@ class CommitsList
callback: =>
this.getOld()
-this.CommitsList = CommitsList \ No newline at end of file
+this.CommitsList = CommitsList
diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee
index fb51d379ebd..45ef44fcc04 100644
--- a/app/assets/javascripts/main.js.coffee
+++ b/app/assets/javascripts/main.js.coffee
@@ -55,8 +55,10 @@ $ ->
$(".one_click_select").on 'click', -> $(@).select()
# Click a .appear-link, appear-data fadeout
- $(".appear-link").on 'click', ->
+ $(".appear-link").on 'click', (e) ->
$('.appear-data').fadeIn()
+ e.preventDefault()
+
# Initialize chosen selects
$('select.chosen').chosen()
diff --git a/app/assets/javascripts/project.js.coffee b/app/assets/javascripts/project.js.coffee
index f926188d23f..780292daa11 100644
--- a/app/assets/javascripts/project.js.coffee
+++ b/app/assets/javascripts/project.js.coffee
@@ -1,10 +1,13 @@
class Project
constructor: ->
- $('.new_project, .edit_project').on 'ajax:before', ->
- $('.project_new_holder, .project_edit_holder').hide()
+ $('.project-edit-container').on 'ajax:before', =>
+ $('.project-edit-container').hide()
$('.save-project-loader').show()
- $('form #project_default_branch').chosen()
+ @initEvents()
+
+
+ initEvents: ->
disableButtonIfEmptyField '#project_name', '.project-submit'
$('#project_issues_enabled').change ->
@@ -21,6 +24,7 @@ class Project
else
$('#project_issues_tracker_id').removeAttr('disabled')
+
@Project = Project
$ ->
diff --git a/app/contexts/issues/bulk_update_context.rb b/app/contexts/issues/bulk_update_context.rb
new file mode 100644
index 00000000000..e92264a8bb1
--- /dev/null
+++ b/app/contexts/issues/bulk_update_context.rb
@@ -0,0 +1,36 @@
+module Issues
+ class BulkUpdateContext < BaseContext
+ def execute
+ update_data = params[:update]
+
+ issues_ids = update_data[:issues_ids].split(",")
+ milestone_id = update_data[:milestone_id]
+ assignee_id = update_data[:assignee_id]
+ status = update_data[:status]
+
+ opts = {}
+ opts[:milestone_id] = milestone_id if milestone_id.present?
+ opts[:assignee_id] = assignee_id if assignee_id.present?
+
+ issues = Issue.where(id: issues_ids).all
+ issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
+
+ issues.each do |issue|
+ issue.update_attributes(opts)
+
+ if status.present?
+ if status == 'closed'
+ issue.close
+ else
+ issue.reopen
+ end
+ end
+ end
+
+ {
+ count: issues.count,
+ success: !issues.count.zero?
+ }
+ end
+ end
+end
diff --git a/app/contexts/issues/list_context.rb b/app/contexts/issues/list_context.rb
new file mode 100644
index 00000000000..a35bddd6443
--- /dev/null
+++ b/app/contexts/issues/list_context.rb
@@ -0,0 +1,32 @@
+module Issues
+ class ListContext < BaseContext
+ include IssuesHelper
+
+ attr_accessor :issues
+
+ def execute
+ @issues = case params[:status]
+ when issues_filter[:all] then @project.issues
+ when issues_filter[:closed] then @project.issues.closed
+ when issues_filter[:to_me] then @project.issues.assigned(current_user)
+ when issues_filter[:by_me] then @project.issues.authored(current_user)
+ else @project.issues.opened
+ end
+
+ @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?
+ @issues = @issues.includes(:author, :project)
+
+ # Filter by specific assignee_id (or lack thereof)?
+ if params[:assignee_id].present?
+ @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
+ end
+
+ # Filter by specific milestone_id (or lack thereof)?
+ if params[:milestone_id].present?
+ @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
+ end
+
+ @issues
+ end
+ end
+end
diff --git a/app/contexts/issues_bulk_update_context.rb b/app/contexts/issues_bulk_update_context.rb
deleted file mode 100644
index 7981259d73d..00000000000
--- a/app/contexts/issues_bulk_update_context.rb
+++ /dev/null
@@ -1,24 +0,0 @@
-class IssuesBulkUpdateContext < BaseContext
- def execute
- update_data = params[:update]
-
- issues_ids = update_data[:issues_ids].split(",")
- milestone_id = update_data[:milestone_id]
- assignee_id = update_data[:assignee_id]
- status = update_data[:status]
-
- opts = {}
- opts[:milestone_id] = milestone_id if milestone_id.present?
- opts[:assignee_id] = assignee_id if assignee_id.present?
- opts[:closed] = (status == "closed") if status.present?
-
- issues = Issue.where(id: issues_ids).all
- issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
- issues.each { |issue| issue.update_attributes(opts) }
- {
- count: issues.count,
- success: !issues.count.zero?
- }
- end
-end
-
diff --git a/app/contexts/issues_list_context.rb b/app/contexts/issues_list_context.rb
deleted file mode 100644
index 0765b30c354..00000000000
--- a/app/contexts/issues_list_context.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-class IssuesListContext < BaseContext
- include IssuesHelper
-
- attr_accessor :issues
-
- def execute
- @issues = case params[:status]
- when issues_filter[:all] then @project.issues
- when issues_filter[:closed] then @project.issues.closed
- when issues_filter[:to_me] then @project.issues.assigned(current_user)
- when issues_filter[:by_me] then @project.issues.authored(current_user)
- else @project.issues.opened
- end
-
- @issues = @issues.tagged_with(params[:label_name]) if params[:label_name].present?
- @issues = @issues.includes(:author, :project)
-
- # Filter by specific assignee_id (or lack thereof)?
- if params[:assignee_id].present?
- @issues = @issues.where(assignee_id: (params[:assignee_id] == '0' ? nil : params[:assignee_id]))
- end
-
- # Filter by specific milestone_id (or lack thereof)?
- if params[:milestone_id].present?
- @issues = @issues.where(milestone_id: (params[:milestone_id] == '0' ? nil : params[:milestone_id]))
- end
-
- @issues
- end
-end
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 242bc90d28f..ba92ba2bdae 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -86,7 +86,7 @@ class IssuesController < ProjectResourceController
end
def bulk_update
- result = IssuesBulkUpdateContext.new(project, current_user, params).execute
+ result = Issues::BulkUpdateContext.new(project, current_user, params).execute
redirect_to :back, notice: "#{result[:count]} issues updated"
end
@@ -109,6 +109,6 @@ class IssuesController < ProjectResourceController
end
def issues_filtered
- @issues = IssuesListContext.new(project, current_user, params).execute
+ @issues = Issues::ListContext.new(project, current_user, params).execute
end
end
diff --git a/app/models/gitlab_ci_service.rb b/app/models/gitlab_ci_service.rb
index 4eb39c7ef4d..9b1c707a6c9 100644
--- a/app/models/gitlab_ci_service.rb
+++ b/app/models/gitlab_ci_service.rb
@@ -46,4 +46,12 @@ class GitlabCiService < Service
def build_page sha
project_url + "/builds/#{sha}"
end
+
+ def builds_path
+ project_url + "?ref=" + project.default_branch
+ end
+
+ def status_img_path
+ project_url + "/status.png?ref=" + project.default_branch
+ end
end
diff --git a/app/views/projects/_errors.html.haml b/app/views/projects/_errors.html.haml
new file mode 100644
index 00000000000..bb9759353a3
--- /dev/null
+++ b/app/views/projects/_errors.html.haml
@@ -0,0 +1,4 @@
+- if @project.errors.any?
+ .alert.alert-error
+ %button{ type: "button", class: "close", "data-dismiss" => "alert"} &times;
+ = @project.errors.full_messages.first
diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml
deleted file mode 100644
index 0e1fd238005..00000000000
--- a/app/views/projects/_form.html.haml
+++ /dev/null
@@ -1,151 +0,0 @@
-.row
- .span3
- %ul.nav.nav-pills.nav-stacked
- %li.active
- = link_to 'Settings', '#tab-settings', 'data-toggle' => 'tab'
- %li
- = link_to 'Transfer', '#tab-transfer', 'data-toggle' => 'tab'
- %li
- = link_to 'Remove', '#tab-remove', 'data-toggle' => 'tab'
-
- .span9
- .tab-content
- .tab-pane.active#tab-settings
- .ui-box.white
- %h5.title Settings:
- .form-holder
- = form_for(@project, remote: true) do |f|
- - if @project.errors.any?
- .alert.alert-error
- %ul
- - @project.errors.full_messages.each do |msg|
- %li= msg
-
- %fieldset
- .clearfix.project_name_holder
- = f.label :name do
- Project name is
- .input
- = f.text_field :name, placeholder: "Example Project", class: "span5"
-
-
- .clearfix
- = f.label :description do
- Project description
- %span.light (optional)
- .input
- = f.text_area :description, placeholder: "awesome project", class: "span5", rows: 3, maxlength: 250
-
- - unless @project.empty_repo?
- .clearfix
- = f.label :default_branch, "Default Branch"
- .input= f.select(:default_branch, @repository.branch_names, {})
-
-
- - if can?(current_user, :change_public_mode, @project)
- %fieldset.public-mode
- %legend
- Public mode:
- .control-group
- = f.label :public, class: 'control-label' do
- %span Public access
- .controls
- = f.check_box :public
- %span.descr
- If checked, this project can be cloned
- %em without any
- authentication.
- It will also be listed on the #{link_to "public access directory", public_root_path}.
- %em Any
- user will have #{link_to "Guest", help_permissions_path} permissions on the repository.
-
- %fieldset.features
- %legend
- Labels:
- .control-group
- = f.label :label_list, "Labels", class: 'control-label'
- .controls
- = f.text_field :label_list, maxlength: 2000, class: "span5"
- %p.hint Separate with comma.
-
- %fieldset.features
- %legend
- Features:
- .control-group
- = f.label :issues_enabled, "Issues", class: 'control-label'
- .controls
- = f.check_box :issues_enabled
- %span.descr Lightweight issue tracking system for this project
-
- - if Project.issues_tracker.values.count > 1
- .control-group
- = f.label :issues_tracker, "Issues tracker", class: 'control-label'
- .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
-
- .clearfix
- = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label'
- .input= f.text_field :issues_tracker_id, disabled: !@project.can_have_issues_tracker_id?
-
- .control-group
- = f.label :merge_requests_enabled, "Merge Requests", class: 'control-label'
- .controls
- = f.check_box :merge_requests_enabled
- %span.descr Submit changes to be merged upstream.
-
- .control-group
- = f.label :wiki_enabled, "Wiki", class: 'control-label'
- .controls
- = f.check_box :wiki_enabled
- %span.descr Pages for project documentation
-
- .control-group
- = f.label :wall_enabled, "Wall", class: 'control-label'
- .controls
- = f.check_box :wall_enabled
- %span.descr Simple chat system for broadcasting inside project
-
- .control-group
- = f.label :snippets_enabled, "Snippets", class: 'control-label'
- .controls
- = f.check_box :snippets_enabled
- %span.descr Share code pastes with others out of git repository
-
-
- .form-actions
- = f.submit 'Save', class: "btn btn-save"
-
- .tab-pane#tab-transfer
- - if can?(current_user, :change_namespace, @project)
- .ui-box.ui-box-danger
- %h5.title Transfer project
- .errors-holder
- .form-holder
- = form_for(@project, url: transfer_project_path(@project), remote: true, html: { class: 'transfer-project' }) do |f|
- .control-group
- = f.label :namespace_id do
- %span Namespace
- .controls
- .clearfix
- = f.select :namespace_id, namespaces_options(@project.namespace_id || Namespace::global_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
- %ul
- %li Be careful. Changing project namespace can have unintended side effects
- %li You can transfer project only to namespaces you can manage
- %li You will need to update your local repositories to point to the new location.
- .form-actions
- = f.submit 'Transfer', class: "btn btn-remove"
- - else
- %p.nothing_here_message Only project owner can transfer a project
-
- .tab-pane#tab-remove
- - if can?(current_user, :remove_project, @project)
- .ui-box.ui-box-danger
- %h5.title Remove project
- .ui-box-body
- %p
- Remove of project will cause removing repository and all related resources like issues, merge requests etc.
- %p
- %strong Removed project can not be restored!
-
- = link_to 'Remove project', @project, confirm: 'Removed project can not be restored! Are you sure?', method: :delete, class: "btn btn-remove btn-small"
- - else
- %p.nothing_here_message Only project owner can remove a project
diff --git a/app/views/projects/_new_form.html.haml b/app/views/projects/_new_form.html.haml
deleted file mode 100644
index b6503636890..00000000000
--- a/app/views/projects/_new_form.html.haml
+++ /dev/null
@@ -1,48 +0,0 @@
-= form_for(@project, remote: true) do |f|
- - if @project.errors.any?
- .alert.alert-error
- %span= @project.errors.full_messages.first
- .clearfix.project_name_holder
- = f.label :name do
- Project name is
- .input
- = f.text_field :name, placeholder: "Example Project", class: "xxlarge"
- = f.submit 'Create project', class: "btn btn-create project-submit"
-
- - if current_user.can_select_namespace?
- .clearfix
- = f.label :namespace_id do
- %span Namespace
- .input
- = f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen'}
-
-
- .clearfix
- .input
- = link_to "#", class: 'appear-link' do
- %i.icon-upload-alt
- %span Import existing repository?
- .clearfix.appear-data
- = f.label :import_url do
- %span Import existing repo
- .input
- = f.text_field :import_url, class: 'xlarge', placeholder: 'https://github.com/randx/six.git'
- .light
- URL must be clonable
-
- %p.padded
- New projects are private by default. You choose who can see the project and commit to repository.
- %hr
-
- - if current_user.can_create_group?
- .clearfix
- .input.light
- Need a group for several dependent projects?
- = link_to new_group_path, class: "btn btn-tiny" do
- Create a group
- - if current_user.can_create_team?
- .clearfix
- .input.light
- Want to share a project between team?
- = link_to new_team_path, class: "btn btn-tiny" do
- Create a team
diff --git a/app/views/projects/create.js.haml b/app/views/projects/create.js.haml
index 296c8688f47..52e61f47283 100644
--- a/app/views/projects/create.js.haml
+++ b/app/views/projects/create.js.haml
@@ -3,8 +3,6 @@
location.href = "#{project_path(@project)}";
- else
:plain
- $('.project_new_holder').show();
- $("#new_project").replaceWith("#{escape_javascript(render('new_form'))}");
+ $(".project-edit-errors").html("#{escape_javascript(render('errors'))}");
$('.save-project-loader').hide();
- new Projects();
- $('select.chosen').chosen()
+ $('.project-edit-container').show();
diff --git a/app/views/projects/edit.html.haml b/app/views/projects/edit.html.haml
index e215ad6fd73..dd087100e4c 100644
--- a/app/views/projects/edit.html.haml
+++ b/app/views/projects/edit.html.haml
@@ -1,10 +1,157 @@
= render "projects/settings_nav"
-.project_edit_holder
+.project-edit-container
%h3.page_title Edit Project
%hr
- = render "projects/form"
-%div.save-project-loader.hide
+ .project-edit-errors
+ .project-edit-content
+ .row
+ .span3
+ %ul.nav.nav-pills.nav-stacked
+ %li.active
+ = link_to 'Settings', '#tab-settings', 'data-toggle' => 'tab'
+ %li
+ = link_to 'Transfer', '#tab-transfer', 'data-toggle' => 'tab'
+ %li
+ = link_to 'Remove', '#tab-remove', 'data-toggle' => 'tab'
+
+ .span9
+ .tab-content
+ .tab-pane.active#tab-settings
+ .ui-box.white
+ %h5.title Settings:
+ .form-holder
+ = form_for(@project, remote: true) do |f|
+ %fieldset
+ .clearfix.project_name_holder
+ = f.label :name do
+ Project name is
+ .input
+ = f.text_field :name, placeholder: "Example Project", class: "span5"
+
+
+ .clearfix
+ = f.label :description do
+ Project description
+ %span.light (optional)
+ .input
+ = f.text_area :description, placeholder: "awesome project", class: "span5", rows: 3, maxlength: 250
+
+ - unless @project.empty_repo?
+ .clearfix
+ = f.label :default_branch, "Default Branch"
+ .input= f.select(:default_branch, @repository.branch_names, {}, {class: 'chosen'})
+
+
+ - if can?(current_user, :change_public_mode, @project)
+ %fieldset.public-mode
+ %legend
+ Public mode:
+ .control-group
+ = f.label :public, class: 'control-label' do
+ %span Public access
+ .controls
+ = f.check_box :public
+ %span.descr
+ If checked, this project can be cloned
+ %em without any
+ authentication.
+ It will also be listed on the #{link_to "public access directory", public_root_path}.
+ %em Any
+ user will have #{link_to "Guest", help_permissions_path} permissions on the repository.
+
+ %fieldset.features
+ %legend
+ Labels:
+ .control-group
+ = f.label :label_list, "Labels", class: 'control-label'
+ .controls
+ = f.text_field :label_list, maxlength: 2000, class: "span5"
+ %p.hint Separate with comma.
+
+ %fieldset.features
+ %legend
+ Features:
+ .control-group
+ = f.label :issues_enabled, "Issues", class: 'control-label'
+ .controls
+ = f.check_box :issues_enabled
+ %span.descr Lightweight issue tracking system for this project
+
+ - if Project.issues_tracker.values.count > 1
+ .control-group
+ = f.label :issues_tracker, "Issues tracker", class: 'control-label'
+ .input= f.select(:issues_tracker, Project.issues_tracker.values, {}, { disabled: !@project.issues_enabled })
+
+ .clearfix
+ = f.label :issues_tracker_id, "Project name or id in issues tracker", class: 'control-label'
+ .input= f.text_field :issues_tracker_id, disabled: !@project.can_have_issues_tracker_id?
+
+ .control-group
+ = f.label :merge_requests_enabled, "Merge Requests", class: 'control-label'
+ .controls
+ = f.check_box :merge_requests_enabled
+ %span.descr Submit changes to be merged upstream.
+
+ .control-group
+ = f.label :wiki_enabled, "Wiki", class: 'control-label'
+ .controls
+ = f.check_box :wiki_enabled
+ %span.descr Pages for project documentation
+
+ .control-group
+ = f.label :wall_enabled, "Wall", class: 'control-label'
+ .controls
+ = f.check_box :wall_enabled
+ %span.descr Simple chat system for broadcasting inside project
+
+ .control-group
+ = f.label :snippets_enabled, "Snippets", class: 'control-label'
+ .controls
+ = f.check_box :snippets_enabled
+ %span.descr Share code pastes with others out of git repository
+
+
+ .form-actions
+ = f.submit 'Save', class: "btn btn-save"
+
+ .tab-pane#tab-transfer
+ - if can?(current_user, :change_namespace, @project)
+ .ui-box.ui-box-danger
+ %h5.title Transfer project
+ .errors-holder
+ .form-holder
+ = form_for(@project, url: transfer_project_path(@project), remote: true, html: { class: 'transfer-project' }) do |f|
+ .control-group
+ = f.label :namespace_id do
+ %span Namespace
+ .controls
+ .clearfix
+ = f.select :namespace_id, namespaces_options(@project.namespace_id || Namespace::global_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
+ %ul
+ %li Be careful. Changing project namespace can have unintended side effects
+ %li You can transfer project only to namespaces you can manage
+ %li You will need to update your local repositories to point to the new location.
+ .form-actions
+ = f.submit 'Transfer', class: "btn btn-remove"
+ - else
+ %p.nothing_here_message Only project owner can transfer a project
+
+ .tab-pane#tab-remove
+ - if can?(current_user, :remove_project, @project)
+ .ui-box.ui-box-danger
+ %h5.title Remove project
+ .ui-box-body
+ %p
+ Remove of project will cause removing repository and all related resources like issues, merge requests etc.
+ %p
+ %strong Removed project can not be restored!
+
+ = link_to 'Remove project', @project, confirm: 'Removed project can not be restored! Are you sure?', method: :delete, class: "btn btn-remove btn-small"
+ - else
+ %p.nothing_here_message Only project owner can remove a project
+
+.save-project-loader.hide
%center
= image_tag "ajax_loader.gif"
%h3 Saving project. Please wait a moment, this page will automatically refresh when ready.
diff --git a/app/views/projects/new.html.haml b/app/views/projects/new.html.haml
index 8ff873aac65..e9099f264bc 100644
--- a/app/views/projects/new.html.haml
+++ b/app/views/projects/new.html.haml
@@ -1,9 +1,55 @@
-.project_new_holder
- %h3.page_title
- New Project
+.project-edit-container
+ %h3.page_title New Project
%hr
- = render 'new_form'
-%div.save-project-loader.hide
+ .project-edit-errors
+ = render 'projects/errors'
+ .project-edit-content
+ = form_for @project, remote: true do |f|
+ .clearfix.project_name_holder
+ = f.label :name do
+ Project name is
+ .input
+ = f.text_field :name, placeholder: "Example Project", class: "xxlarge", tabindex: 1
+ = f.submit 'Create project', class: "btn btn-create project-submit", tabindex: 3
+
+ - if current_user.can_select_namespace?
+ .clearfix
+ = f.label :namespace_id do
+ %span Namespace
+ .input
+ = f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen', tabindex: 2}
+
+ .clearfix
+ .input
+ = link_to "#", class: 'appear-link' do
+ %i.icon-upload-alt
+ %span Import existing repository?
+ .clearfix.appear-data.import-url-data
+ = f.label :import_url do
+ %span Import existing repo
+ .input
+ = f.text_field :import_url, class: 'xlarge', placeholder: 'https://github.com/randx/six.git'
+ .light
+ URL must be clonable
+
+ %p.padded
+ New projects are private by default. You choose who can see the project and commit to repository.
+ %hr
+
+ - if current_user.can_create_group?
+ .clearfix
+ .input.light
+ Need a group for several dependent projects?
+ = link_to new_group_path, class: "btn btn-tiny" do
+ Create a group
+ - if current_user.can_create_team?
+ .clearfix
+ .input.light
+ Want to share a project between team?
+ = link_to new_team_path, class: "btn btn-tiny" do
+ Create a team
+
+.save-project-loader.hide
%center
= image_tag "ajax_loader.gif"
%h3 Creating project &amp; repository. Please wait a moment, this page will automatically refresh when ready.
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml
index 6ee2e3827b2..8a095130159 100644
--- a/app/views/projects/show.html.haml
+++ b/app/views/projects/show.html.haml
@@ -44,3 +44,8 @@
%p
Forked from:
= link_to @project.forked_from_project.name_with_namespace, project_path(@project.forked_from_project)
+
+ - if @project.gitlab_ci?
+ %hr
+ = link_to @project.gitlab_ci_service.builds_path do
+ = image_tag @project.gitlab_ci_service.status_img_path, alt: "build status"
diff --git a/app/views/projects/update.js.haml b/app/views/projects/update.js.haml
index f44ed529182..cbb21f2b9fb 100644
--- a/app/views/projects/update.js.haml
+++ b/app/views/projects/update.js.haml
@@ -3,6 +3,7 @@
location.href = "#{edit_project_path(@project)}";
- else
:plain
- $('.project_edit_holder').show();
- $(".edit_project").replaceWith("#{escape_javascript(render('form'))}");
+ $(".project-edit-errors").html("#{escape_javascript(render('errors'))}");
$('.save-project-loader').hide();
+ $('.project-edit-container').show();
+ $('.project-edit-content .btn-save').enableButton();
diff --git a/lib/tasks/gitlab/check.rake b/lib/tasks/gitlab/check.rake
index 4a2789b55aa..77f5c02be2e 100644
--- a/lib/tasks/gitlab/check.rake
+++ b/lib/tasks/gitlab/check.rake
@@ -668,8 +668,9 @@ namespace :gitlab do
def check_git_version
required_version = Gitlab::VersionInfo.new(1, 7, 10)
- current_version = Gitlab::VersionInfo.parse(run("git --version"))
+ current_version = Gitlab::VersionInfo.parse(run("#{Gitlab.config.git.bin_path} --version"))
+ puts "Your git bin path is \"#{Gitlab.config.git.bin_path}\""
print "Git version >= #{required_version} ? ... "
if required_version <= current_version