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

Import repo feature

parent 44ce89400d1f
......@@ -36,6 +36,10 @@ $ ->
# Click a .one_click_select field, select the contents
$(".one_click_select").on 'click', -> $(@).select()
# Click a .appear-link, appear-data fadeout
$(".appear-link").on 'click', ->
# Initialize chosen selects
......@@ -564,3 +564,7 @@ img.emoji {
vertical-align: middle;
width: 20px;
.appear-data {
display: none;
......@@ -34,13 +34,23 @@ def execute
@project.creator = current_user
# Import project from cloneable resource
if @project.valid? && @project.import_url.present?
shell =
if shell.import_repository(@project.path_with_namespace, @project.import_url)
@project.errors.add(:import_url, 'cannot clone repo')
@project.users_projects.create(project_access: UsersProject::MASTER, user: current_user)
rescue => ex
@project.errors.add(:base, "Can't save project. Please try again later")
#rescue => ex
#@project.errors.add(:base, "Can't save project. Please try again later")
......@@ -25,12 +25,13 @@ class Project < ActiveRecord::Base
class TransferError < StandardError; end
attr_accessible :name, :path, :description, :default_branch, :issues_enabled,
:wall_enabled, :merge_requests_enabled, :wiki_enabled, :public, as: [:default, :admin]
attr_accessible :name, :path, :description, :default_branch,
:issues_enabled, :wall_enabled, :merge_requests_enabled,
:wiki_enabled, :public, :import_url, as: [:default, :admin]
attr_accessible :namespace_id, :creator_id, as: :admin
attr_accessor :error_code
attr_accessor :import_url
# Relations
belongs_to :creator, foreign_key: "creator_id", class_name: "User"
......@@ -75,6 +76,8 @@ class TransferError < StandardError; end
validates_uniqueness_of :name, 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
# Scopes
......@@ -16,6 +16,20 @@
= :namespace_id, namespaces_options(params[:namespace_id] || :current_user), {}, {class: 'chosen'}
= link_to "#", class: 'appear-link' do
%span Import existing repository?
= f.label :import_url do
%span Import existing repo
= f.text_field :import_url, class: 'xlarge'
URL should be clonable
New projects are private by default. You choose who can see the project and commit to repository.
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