summaryrefslogtreecommitdiff
path: root/lib/api/commits.rb
diff options
context:
space:
mode:
authorMartin Hanzel <mhanzel@gitlab.com>2019-06-05 10:18:12 +0200
committerMartin Hanzel <mhanzel@gitlab.com>2019-06-05 10:18:12 +0200
commit03c72e998dd8016ccda0a6b9515dd3fc0302978a (patch)
tree1f7e1623637de75c2807ef7d40f0feae08c687f3 /lib/api/commits.rb
parent3aeea7fb0c1d6389df6d8643ef40dd54aa84d1a8 (diff)
parentb560ce1e666733f12c65e8b9f659c89256c1775b (diff)
downloadgitlab-ce-03c72e998dd8016ccda0a6b9515dd3fc0302978a.tar.gz
Merge branch 'master' into mh/notes-specmh/notes-spec
Diffstat (limited to 'lib/api/commits.rb')
-rw-r--r--lib/api/commits.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/api/commits.rb b/lib/api/commits.rb
index 65eb9bfb87e..80913f4ca07 100644
--- a/lib/api/commits.rb
+++ b/lib/api/commits.rb
@@ -96,17 +96,27 @@ module API
end
end
optional :start_branch, type: String, desc: 'Name of the branch to start the new commit from'
+ optional :start_project, types: [Integer, String], desc: 'The ID or path of the project to start the commit from'
optional :author_email, type: String, desc: 'Author email for commit'
optional :author_name, type: String, desc: 'Author name for commit'
optional :stats, type: Boolean, default: true, desc: 'Include commit stats'
optional :force, type: Boolean, default: false, desc: 'When `true` overwrites the target branch with a new commit based on the `start_branch`'
end
post ':id/repository/commits' do
+ if params[:start_project]
+ start_project = find_project!(params[:start_project])
+
+ unless user_project.forked_from?(start_project)
+ forbidden!("Project is not included in the fork network for #{start_project.full_name}")
+ end
+ end
+
authorize_push_to_branch!(params[:branch])
attrs = declared_params
attrs[:branch_name] = attrs.delete(:branch)
attrs[:start_branch] ||= attrs[:branch_name]
+ attrs[:start_project] = start_project if start_project
result = ::Files::MultiService.new(user_project, current_user, attrs).execute