diff options
author | Rubén Dávila <rdavila84@gmail.com> | 2016-02-10 16:05:04 -0500 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-02-19 13:14:53 -0500 |
commit | 2ea5b37f2effacc98dd15e1d86386c40bc719200 (patch) | |
tree | 3cc551ea745d9b89f63744d30417f2de0a520573 | |
parent | 11345866d8ae3198c0f5523e8dee1e14cb21b3c7 (diff) | |
download | gitlab-ce-2ea5b37f2effacc98dd15e1d86386c40bc719200.tar.gz |
Some fixes and refactors for code related to forks.
-rw-r--r-- | app/helpers/commits_helper.rb | 2 | ||||
-rw-r--r-- | app/models/repository.rb | 2 | ||||
-rw-r--r-- | app/services/commits/revert_service.rb | 29 |
3 files changed, 27 insertions, 6 deletions
diff --git a/app/helpers/commits_helper.rb b/app/helpers/commits_helper.rb index b37bdaf5f07..d5b1feed931 100644 --- a/app/helpers/commits_helper.rb +++ b/app/helpers/commits_helper.rb @@ -124,6 +124,8 @@ module CommitsHelper end def revert_commit_link(show_modal_condition, continue_to_path) + return unless current_user + if show_modal_condition link_to('Revert', '#modal-revert-commit', 'data-target' => '#modal-revert-commit', diff --git a/app/models/repository.rb b/app/models/repository.rb index 70784b3d85d..e53daff2c8f 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -628,8 +628,6 @@ class Repository args = [commit.id, source_sha] args << { mainline: 1 } if commit.merge_commit? - # Temporary branch exists and contains the revert commit - return true if (base_branch != target_branch) && find_branch(target_branch) return false unless diff_exists?(source_sha, commit.id) revert_index = rugged.revert_commit(*args) diff --git a/app/services/commits/revert_service.rb b/app/services/commits/revert_service.rb index 6e8a7f8eabb..d7720eaffda 100644 --- a/app/services/commits/revert_service.rb +++ b/app/services/commits/revert_service.rb @@ -14,9 +14,7 @@ module Commits if commit success else - error("Sorry, we cannot revert this #{params[:revert_type_title]} automatically. - It may have already been reverted, or a more recent commit may - have updated some of its content.") + custom_error end rescue Repository::CommitError, Gitlab::Git::Repository::InvalidBlobName, GitHooksService::PreReceiveError, ValidationError => ex error(ex.message) @@ -24,7 +22,11 @@ module Commits def commit if @create_merge_request - repository.revert(current_user, @commit, @target_branch, @commit.revert_branch_name) + # Temporary branch exists and contains the revert commit + return true if repository.find_branch(@commit.revert_branch_name) + return false unless create_target_branch + + repository.revert(current_user, @commit, @commit.revert_branch_name) else repository.revert(current_user, @commit, @target_branch) end @@ -32,6 +34,25 @@ module Commits private + def custom_error + if @branch_error_msg + error("There was an error creating the source branch: #{@branch_error_msg}") + else + error("Sorry, we cannot revert this #{params[:revert_type_title]} automatically. + It may have already been reverted, or a more recent commit may + have updated some of its content.") + end + end + + def create_target_branch + result = CreateBranchService.new(@project, current_user) + .execute(@commit.revert_branch_name, @target_branch, source_project: @source_project) + + @branch_error_msg = result[:message] + + result[:status] != :error + end + def raise_error(message) raise ValidationError.new(message) end |