Commit 8bf8c70c authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Import repo feature

parent ab0cfc00
...@@ -36,6 +36,10 @@ $ -> ...@@ -36,6 +36,10 @@ $ ->
# Click a .one_click_select field, select the contents # Click a .one_click_select field, select the contents
$(".one_click_select").on 'click', -> $(@).select() $(".one_click_select").on 'click', -> $(@).select()
# Click a .appear-link, appear-data fadeout
$(".appear-link").on 'click', ->
$('.appear-data').fadeIn()
# Initialize chosen selects # Initialize chosen selects
$('select.chosen').chosen() $('select.chosen').chosen()
......
...@@ -564,3 +564,7 @@ img.emoji { ...@@ -564,3 +564,7 @@ img.emoji {
vertical-align: middle; vertical-align: middle;
width: 20px; width: 20px;
} }
.appear-data {
display: none;
}
...@@ -34,13 +34,23 @@ module Projects ...@@ -34,13 +34,23 @@ module Projects
@project.creator = current_user @project.creator = current_user
# Import project from cloneable resource
if @project.valid? && @project.import_url.present?
shell = Gitlab::Shell.new
if shell.import_repository(@project.path_with_namespace, @project.import_url)
true
else
@project.errors.add(:import_url, 'cannot clone repo')
end
end
if @project.save if @project.save
@project.users_projects.create(project_access: UsersProject::MASTER, user: current_user) @project.users_projects.create(project_access: UsersProject::MASTER, user: current_user)
end end
@project @project
rescue => ex #rescue => ex
@project.errors.add(:base, "Can't save project. Please try again later") #@project.errors.add(:base, "Can't save project. Please try again later")
@project @project
end end
......
...@@ -25,12 +25,13 @@ class Project < ActiveRecord::Base ...@@ -25,12 +25,13 @@ class Project < ActiveRecord::Base
class TransferError < StandardError; end class TransferError < StandardError; end
attr_accessible :name, :path, :description, :default_branch, :issues_enabled, attr_accessible :name, :path, :description, :default_branch,
:wall_enabled, :merge_requests_enabled, :wiki_enabled, :public, as: [:default, :admin] :issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, :public, :import_url, as: [:default, :admin]
attr_accessible :namespace_id, :creator_id, as: :admin attr_accessible :namespace_id, :creator_id, as: :admin
attr_accessor :error_code attr_accessor :import_url
# Relations # Relations
belongs_to :creator, foreign_key: "creator_id", class_name: "User" belongs_to :creator, foreign_key: "creator_id", class_name: "User"
...@@ -75,6 +76,8 @@ class Project < ActiveRecord::Base ...@@ -75,6 +76,8 @@ class Project < ActiveRecord::Base
validates_uniqueness_of :name, scope: :namespace_id validates_uniqueness_of :name, scope: :namespace_id
validates_uniqueness_of :path, scope: :namespace_id validates_uniqueness_of :path, scope: :namespace_id
validates :import_url, format: { with: URI::regexp(%w(http https)), message: "should be a valid url" }
validate :check_limit, :repo_name validate :check_limit, :repo_name
# Scopes # Scopes
......
...@@ -16,6 +16,20 @@ ...@@ -16,6 +16,20 @@
.input .input
= f.select :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen'} = 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'
.light
URL should be clonable
%p.padded %p.padded
New projects are private by default. You choose who can see the project and commit to repository. New projects are private by default. You choose who can see the project and commit to repository.
%hr %hr
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment