summaryrefslogtreecommitdiff
path: root/app/services/projects/create_service.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-04-24 21:37:12 +0200
committerDouwe Maan <douwe@gitlab.com>2015-04-24 22:58:27 +0200
commit0cf76a0b70f2a1dba6760263f842d2841dfc0cd9 (patch)
treecd2fa2cc924a66ddefcf914f31e59a82bc70faa2 /app/services/projects/create_service.rb
parent62117f2f25646009fb5b20d7a215d7d697ce3231 (diff)
downloadgitlab-ce-forked-event.tar.gz
Use Projects::CreateService to fork projects so that after-create hooks are run.forked-event
Diffstat (limited to 'app/services/projects/create_service.rb')
-rw-r--r--app/services/projects/create_service.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index a7afcf8f64b..011f6f6145e 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -5,6 +5,8 @@ module Projects
end
def execute
+ forked_from_project_id = params.delete(:forked_from_project_id)
+
@project = Project.new(params)
# Make sure that the user is allowed to use the specified visibility
@@ -45,10 +47,14 @@ module Projects
@project.creator = current_user
+ if forked_from_project_id
+ @project.build_forked_project_link(forked_from_project_id: forked_from_project_id)
+ end
+
Project.transaction do
@project.save
- unless @project.import?
+ if @project.persisted? && !@project.import?
unless @project.create_repository
raise 'Failed to create repository'
end