summaryrefslogtreecommitdiff
path: root/app/models/commit.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/commit.rb')
-rw-r--r--app/models/commit.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb
index 638fddc5d3d..24732b6dd29 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -251,6 +251,30 @@ class Commit
project.repository.next_branch("cherry-pick-#{short_id}", mild: true)
end
+ def cherry_pick_message(start_branch_name)
+ message_buffer = message.dup
+
+ if merge_commit?
+ compare = CompareService.new(project, sha).execute(project, start_branch_name)
+
+ *commits_in_merge, merge_commit = compare.commits
+
+ message_buffer << "\n\ncherry picked from merge #{merge_commit.sha}"
+
+ if commits_in_merge.present?
+ message_buffer << "; commits:"
+
+ commits_in_merge.each do |commit_in_merge|
+ message_buffer << "\n- #{commit_in_merge.sha}"
+ end
+ end
+ else
+ message_buffer << "\ncherry picked from commit #{sha}"
+ end
+
+ message_buffer
+ end
+
def revert_description(user)
if merged_merge_request?(user)
"This reverts merge request #{merged_merge_request(user).to_reference}"