summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-12 19:25:48 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-03-12 19:25:48 +0200
commit37db76a31b8d9676aeadcaf6e2e175ead0f68d74 (patch)
tree81fef374bb2d112a8843c855c60653149a202b33 /app
parent1436433c7b982fbe17b10f744f2f65f208305d3c (diff)
downloadgitlab-ce-37db76a31b8d9676aeadcaf6e2e175ead0f68d74.tar.gz
Project import and retry import scaffold
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects_controller.rb37
-rw-r--r--app/views/projects/create.js.haml8
-rw-r--r--app/views/projects/empty.html.haml70
-rw-r--r--app/views/projects/import.html.haml29
4 files changed, 89 insertions, 55 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index f1c0336e6ea..f4087b884c8 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -5,7 +5,7 @@ class ProjectsController < ApplicationController
# Authorize
before_filter :authorize_read_project!, except: [:index, :new, :create]
- before_filter :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer, :archive, :unarchive]
+ before_filter :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer, :archive, :unarchive, :retry_import]
before_filter :require_non_empty_project, only: [:blob, :tree, :graph]
layout 'navless', only: [:new, :create, :fork]
@@ -21,16 +21,9 @@ class ProjectsController < ApplicationController
def create
@project = ::Projects::CreateService.new(current_user, params[:project]).execute
+ flash[:notice] = 'Project was successfully created.' if @project.saved?
respond_to do |format|
- flash[:notice] = 'Project was successfully created.' if @project.saved?
- format.html do
- if @project.saved?
- redirect_to @project
- else
- render "new"
- end
- end
format.js
end
end
@@ -67,9 +60,7 @@ class ProjectsController < ApplicationController
if @project.empty_repo?
render "projects/empty", layout: user_layout
else
- if current_user
- @last_push = current_user.recent_push(@project.id)
- end
+ @last_push = current_user.recent_push(@project.id) if current_user
render :show, layout: user_layout
end
end
@@ -77,6 +68,28 @@ class ProjectsController < ApplicationController
end
end
+ def import
+ if project.import_finished?
+ redirect_to @project
+ return
+ end
+ end
+
+ def retry_import
+ unless @project.import_failed?
+ redirect_to import_project_path(@project)
+ end
+
+ @project.import_url = params[:project][:import_url]
+
+ if @project.save
+ @project.reload
+ @project.import_retry
+ end
+
+ redirect_to import_project_path(@project)
+ end
+
def destroy
return access_denied! unless can?(current_user, :remove_project, project)
diff --git a/app/views/projects/create.js.haml b/app/views/projects/create.js.haml
index a444b8b59a6..89710d3a09a 100644
--- a/app/views/projects/create.js.haml
+++ b/app/views/projects/create.js.haml
@@ -1,6 +1,10 @@
- if @project.saved?
- :plain
- location.href = "#{project_path(@project)}";
+ - if @project.import?
+ :plain
+ location.href = "#{import_project_path(@project)}";
+ - else
+ :plain
+ location.href = "#{project_path(@project)}";
- else
:plain
$(".project-edit-errors").html("#{escape_javascript(render('errors'))}");
diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml
index 489b9b0e951..97dc73bce14 100644
--- a/app/views/projects/empty.html.haml
+++ b/app/views/projects/empty.html.haml
@@ -1,46 +1,34 @@
= render "home_panel"
-- if @project.import? && !@project.imported
- .save-project-loader
- %center
- %h2
- %i.icon-spinner.icon-spin
- Importing repository.
- %p.monospace git clone --bare #{@project.import_url}
- %p Please wait while we import the repository for you. Refresh at will.
- :javascript
- new ProjectImport();
+%div.git-empty
+ %fieldset
+ %legend Git global setup:
+ %pre.dark
+ :preserve
+ git config --global user.name "#{git_user_name}"
+ git config --global user.email "#{git_user_email}"
-- else
- %div.git-empty
- %fieldset
- %legend Git global setup:
- %pre.dark
- :preserve
- git config --global user.name "#{git_user_name}"
- git config --global user.email "#{git_user_email}"
+ %fieldset
+ %legend Create Repository
+ %pre.dark
+ :preserve
+ mkdir #{@project.path}
+ cd #{@project.path}
+ git init
+ touch README
+ git add README
+ git commit -m 'first commit'
+ git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'clone')}
+ git push -u origin master
- %fieldset
- %legend Create Repository
- %pre.dark
- :preserve
- mkdir #{@project.path}
- cd #{@project.path}
- git init
- touch README
- git add README
- git commit -m 'first commit'
- git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'clone')}
- git push -u origin master
+ %fieldset
+ %legend Existing Git Repo?
+ %pre.dark
+ :preserve
+ cd existing_git_repo
+ git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'clone')}
+ git push -u origin master
- %fieldset
- %legend Existing Git Repo?
- %pre.dark
- :preserve
- cd existing_git_repo
- git remote add origin #{ content_tag(:span, default_url_to_repo, class: 'clone')}
- git push -u origin master
-
- - if can? current_user, :remove_project, @project
- .prepend-top-20
- = link_to 'Remove project', @project, data: { confirm: remove_project_message(@project)}, method: :delete, class: "btn btn-remove pull-right"
+- if can? current_user, :remove_project, @project
+ .prepend-top-20
+ = link_to 'Remove project', @project, data: { confirm: remove_project_message(@project)}, method: :delete, class: "btn btn-remove pull-right"
diff --git a/app/views/projects/import.html.haml b/app/views/projects/import.html.haml
new file mode 100644
index 00000000000..c9fb6c5c6ab
--- /dev/null
+++ b/app/views/projects/import.html.haml
@@ -0,0 +1,29 @@
+- if @project.import_in_progress?
+ .save-project-loader
+ %center
+ %h2
+ %i.icon-spinner.icon-spin
+ Import in progress.
+ %p.monospace git clone --bare #{@project.import_url}
+ %p Please wait while we import the repository for you. Refresh at will.
+ :javascript
+ new ProjectImport();
+
+- elsif @project.import_failed?
+ .save-project-loader
+ %center
+ %h2
+ Import failed. Retry?
+ %hr
+ = form_for @project, url: retry_import_project_path(@project), method: :put, html: { class: 'form-horizontal' } do |f|
+ .form-group.import-url-data
+ = f.label :import_url, class: 'control-label' do
+ %span Import existing repo
+ .col-sm-10
+ = f.text_field :import_url, class: 'form-control', placeholder: 'https://github.com/randx/six.git'
+ .bs-callout.bs-callout-info
+ This url must be publicly accessible or you can add a username and password like this: https://username:password@gitlab.com/company/project.git.
+ %br
+ The import will time out after 2 minutes. For big repositories, use a clone/push combination.
+ .form-actions
+ = f.submit 'Retry import', class: "btn btn-create", tabindex: 4