Provide more details of why a cherry-pick or revert failed

Currently if a cherry-pick or revert fails, we show a generic error message:

{
    "message": "Sorry, we cannot cherry-pick this merge request automatically. This merge request may already have been cherry-picked, or a more recent commit may have updated some of its content."
}

Digging deeper into the place where we handle the response from Gitaly, not much more information is available there either:

From: /Users/rspeicher/Code/gitlab/gdk-ee/gitlab-ee/lib/gitlab/gitaly_client/operation_service.rb @ line 451 Gitlab::GitalyClient::OperationService#handle_cherry_pick_or_revert_response:

    444: def handle_cherry_pick_or_revert_response(response)
    445:   if response.pre_receive_error.presence
    446:     raise Gitlab::Git::PreReceiveError, response.pre_receive_error
    447:   elsif response.commit_error.presence
    448:     raise Gitlab::Git::CommitError, response.commit_error
    449:   elsif response.create_tree_error.presence
    450:     require 'pry'; binding.pry
 => 451:     raise Gitlab::Git::Repository::CreateTreeError, response.create_tree_error
    452:   end
    453:
    454:   Gitlab::Git::OperationService::BranchUpdate.from_gitaly(response.branch_update)
    455: end

[1] pry(#<Gitlab::GitalyClient::OperationService>)> response
=> <Gitaly::UserCherryPickResponse: branch_update: nil, create_tree_error: "Gitlab::Git::Repository::CreateTreeError", commit_error: "", pre_receive_error: "">
Edited by Robert Speicher