From 1d6ba597028142511af8c9863f81073278ccd927 Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Thu, 10 Aug 2017 21:16:49 +0200 Subject: Add 'from commit' information to cherry-picked commits Store the original commit in the commit message. In case of merge commit, the commits added to the start branch are also listed. --- app/models/commit.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'app/models/commit.rb') 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}" -- cgit v1.2.3 From 3d7febc01c98baaeb6c937fa63d2bf23681cc8d2 Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Tue, 15 Aug 2017 19:35:28 +0200 Subject: Extracted cherry-pick description in ::Commit This also fixes the inconsistency between non/merge commits in the number of newlines introduced. --- app/models/commit.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index 24732b6dd29..9b5f3212bf3 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -251,15 +251,15 @@ class Commit project.repository.next_branch("cherry-pick-#{short_id}", mild: true) end - def cherry_pick_message(start_branch_name) - message_buffer = message.dup - + def cherry_pick_description(start_branch_name) if merge_commit? + message_buffer = "" + 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}" + message_buffer << "cherry picked from merge #{merge_commit.sha}" if commits_in_merge.present? message_buffer << "; commits:" @@ -268,11 +268,15 @@ class Commit message_buffer << "\n- #{commit_in_merge.sha}" end end + + message_buffer else - message_buffer << "\ncherry picked from commit #{sha}" + "cherry picked from commit #{sha}" end + end - message_buffer + def cherry_pick_message(start_branch_name) + %Q{#{message}\n\n#{cherry_pick_description(start_branch_name)}} end def revert_description(user) -- cgit v1.2.3 From e33608d8e4367a04d855d047aceb65a927b3d8d8 Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Tue, 15 Aug 2017 19:57:40 +0200 Subject: Made commit cherry-pick message more standard Follow the `cherry pick -x` format for the first line, and the interactive rebase format for the commits in the merge, in case of merge commit --- app/models/commit.rb | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index 9b5f3212bf3..314004ae58a 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -252,27 +252,24 @@ class Commit end def cherry_pick_description(start_branch_name) - if merge_commit? - message_buffer = "" + message_buffer = "(cherry picked from commit #{sha})" + if merge_commit? compare = CompareService.new(project, sha).execute(project, start_branch_name) - *commits_in_merge, merge_commit = compare.commits - - message_buffer << "cherry picked from merge #{merge_commit.sha}" + # Ignore the merge commit. + commits_in_merge = compare.commits[0..-2] if commits_in_merge.present? - message_buffer << "; commits:" + message_buffer << "\n" commits_in_merge.each do |commit_in_merge| - message_buffer << "\n- #{commit_in_merge.sha}" + message_buffer << "\n#{commit_in_merge.short_id} #{commit_in_merge.title}" end end - - message_buffer - else - "cherry picked from commit #{sha}" end + + message_buffer end def cherry_pick_message(start_branch_name) -- cgit v1.2.3 From 85aeb884386f9943f8cc95cb1d2faabf011e5c6a Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Tue, 15 Aug 2017 21:17:52 +0200 Subject: Add support for start project to commit cherry-pick description --- app/models/commit.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index 314004ae58a..f36e07fc3ca 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -251,11 +251,11 @@ class Commit project.repository.next_branch("cherry-pick-#{short_id}", mild: true) end - def cherry_pick_description(start_branch_name) + def cherry_pick_description(start_project, start_branch_name) message_buffer = "(cherry picked from commit #{sha})" if merge_commit? - compare = CompareService.new(project, sha).execute(project, start_branch_name) + compare = CompareService.new(project, sha).execute(start_project, start_branch_name) # Ignore the merge commit. commits_in_merge = compare.commits[0..-2] @@ -272,8 +272,8 @@ class Commit message_buffer end - def cherry_pick_message(start_branch_name) - %Q{#{message}\n\n#{cherry_pick_description(start_branch_name)}} + def cherry_pick_message(start_project, start_branch_name) + %Q{#{message}\n\n#{cherry_pick_description(start_project, start_branch_name)}} end def revert_description(user) -- cgit v1.2.3 From c0f921606c91e3e5c601497f57becbf4c6a8e3ac Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Thu, 17 Aug 2017 20:26:06 +0200 Subject: Correct the cherry-pick message for merge commits The list of commits must be generated from the merge request, not from a diff of the branches. --- app/models/commit.rb | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index f36e07fc3ca..5f59d088cd2 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -251,19 +251,16 @@ class Commit project.repository.next_branch("cherry-pick-#{short_id}", mild: true) end - def cherry_pick_description(start_project, start_branch_name) + def cherry_pick_description(user) message_buffer = "(cherry picked from commit #{sha})" - if merge_commit? - compare = CompareService.new(project, sha).execute(start_project, start_branch_name) - - # Ignore the merge commit. - commits_in_merge = compare.commits[0..-2] + if merged_merge_request?(user) + commits_in_merge_request = merged_merge_request(user).commits - if commits_in_merge.present? + if commits_in_merge_request.present? message_buffer << "\n" - commits_in_merge.each do |commit_in_merge| + commits_in_merge_request.each do |commit_in_merge| message_buffer << "\n#{commit_in_merge.short_id} #{commit_in_merge.title}" end end @@ -272,8 +269,8 @@ class Commit message_buffer end - def cherry_pick_message(start_project, start_branch_name) - %Q{#{message}\n\n#{cherry_pick_description(start_project, start_branch_name)}} + def cherry_pick_message(user) + %Q{#{message}\n\n#{cherry_pick_description(user)}} end def revert_description(user) -- cgit v1.2.3 From 9ec358af7bfe95c90d1c3c3fdd1db8a3a69c11ed Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Mon, 21 Aug 2017 20:47:18 +0200 Subject: Reverse order of commits in MR cherry-pick message Also improved the UT for better documenting this change. --- app/models/commit.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index 5f59d088cd2..78e67c09d93 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -260,7 +260,7 @@ class Commit if commits_in_merge_request.present? message_buffer << "\n" - commits_in_merge_request.each do |commit_in_merge| + commits_in_merge_request.reverse.each do |commit_in_merge| message_buffer << "\n#{commit_in_merge.short_id} #{commit_in_merge.title}" end end -- cgit v1.2.3 From 83417865d06226d23edde69cf98b3d3b88aff07f Mon Sep 17 00:00:00 2001 From: Saverio Miroddi Date: Mon, 21 Aug 2017 20:50:48 +0200 Subject: Change a variable name in Commit#cherry_pick_description --- app/models/commit.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'app/models/commit.rb') diff --git a/app/models/commit.rb b/app/models/commit.rb index 78e67c09d93..d8670f13f28 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -252,21 +252,21 @@ class Commit end def cherry_pick_description(user) - message_buffer = "(cherry picked from commit #{sha})" + message_body = "(cherry picked from commit #{sha})" if merged_merge_request?(user) commits_in_merge_request = merged_merge_request(user).commits if commits_in_merge_request.present? - message_buffer << "\n" + message_body << "\n" commits_in_merge_request.reverse.each do |commit_in_merge| - message_buffer << "\n#{commit_in_merge.short_id} #{commit_in_merge.title}" + message_body << "\n#{commit_in_merge.short_id} #{commit_in_merge.title}" end end end - message_buffer + message_body end def cherry_pick_message(user) -- cgit v1.2.3