Import repo feature
This commit is contained in:
parent
ab0cfc0036
commit
8bf8c70c4b
5 changed files with 40 additions and 5 deletions
|
@ -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', ->
|
||||
$('.appear-data').fadeIn()
|
||||
|
||||
# Initialize chosen selects
|
||||
$('select.chosen').chosen()
|
||||
|
||||
|
|
|
@ -564,3 +564,7 @@ img.emoji {
|
|||
vertical-align: middle;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.appear-data {
|
||||
display: none;
|
||||
}
|
||||
|
|
|
@ -34,13 +34,23 @@ module Projects
|
|||
|
||||
@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
|
||||
@project.users_projects.create(project_access: UsersProject::MASTER, user: current_user)
|
||||
end
|
||||
|
||||
@project
|
||||
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")
|
||||
@project
|
||||
end
|
||||
|
||||
|
|
|
@ -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 Project < ActiveRecord::Base
|
|||
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 @@
|
|||
.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'
|
||||
.light
|
||||
URL should be clonable
|
||||
|
||||
%p.padded
|
||||
New projects are private by default. You choose who can see the project and commit to repository.
|
||||
%hr
|
||||
|
|
Loading…
Reference in a new issue