From caed61adeee1b5f1bf6943abd53e381ca31588c6 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 2 Mar 2017 18:11:23 -0600 Subject: [PATCH] Use separate error class for cherry-pick and revert tree errors --- app/models/repository.rb | 5 +++-- app/services/commits/change_service.rb | 14 +++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index 4f8b436ee16..e7cc8d6e083 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -6,6 +6,7 @@ class Repository attr_accessor :path_with_namespace, :project CommitError = Class.new(StandardError) + CreateTreeError = Class.new(StandardError) # Methods that cache data from the Git repository. # @@ -871,7 +872,7 @@ class Repository revert_tree_id = check_revert_content(commit, start_commit.sha) unless revert_tree_id - raise Repository::CommitError.new('Failed to revert commit') + raise Repository::CreateTreeError.new('Failed to revert commit') end committer = user_to_committer(user) @@ -895,7 +896,7 @@ class Repository cherry_pick_tree_id = check_cherry_pick_content(commit, start_commit.sha) unless cherry_pick_tree_id - raise Repository::CommitError.new('Failed to cherry-pick commit') + raise Repository::CreateTreeError.new('Failed to cherry-pick commit') end committer = user_to_committer(user) diff --git a/app/services/commits/change_service.rb b/app/services/commits/change_service.rb index 3051ebf5e52..3dcecee9365 100644 --- a/app/services/commits/change_service.rb +++ b/app/services/commits/change_service.rb @@ -37,14 +37,10 @@ module Commits start_branch_name: @start_branch) success - rescue Repository::CommitError => e - if e.message =~ /Failed to/ - error_msg = "Sorry, we cannot #{action.to_s.dasherize} this #{@commit.change_type_title(current_user)} automatically. + rescue Repository::CreateTreeError => e + error_msg = "Sorry, we cannot #{action.to_s.dasherize} this #{@commit.change_type_title(current_user)} automatically. A #{action.to_s.dasherize} may have already been performed with this #{@commit.change_type_title(current_user)}, or a more recent commit may have updated some of its content." - raise ChangeError, error_msg - else - raise - end + raise ChangeError, error_msg end def check_push_permissions @@ -58,8 +54,8 @@ module Commits end def validate_target_branch - result = ValidateNewBranchService.new(@project, current_user). - execute(@target_branch) + result = ValidateNewBranchService.new(@project, current_user) + .execute(@target_branch) if result[:status] == :error raise ChangeError, "There was an error creating the source branch: #{result[:message]}"