From 6b0e4783530f58d7bd9e425f21c170b83a8d0dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20D=C3=A1vila?= <rdavila84@gmail.com> Date: Sun, 7 Feb 2016 12:56:51 -0500 Subject: [PATCH] Some fixes required for conflicts on revert. --- app/models/repository.rb | 17 ++++++++++------- app/services/commits/revert_service.rb | 6 ++++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index 116e808f3bb..6c1cd308a41 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -628,18 +628,21 @@ class Repository target_sha = find_branch(target_branch).try(:target) # First make revert in temp branch - status = target_sha ? true : revert_commit(user, commit, target_branch, base_branch) + rm_branch(target_branch) if target_sha + success = revert_commit(user, commit, target_branch, base_branch) # Make the revert happen in the target branch - source_sha = find_branch(target_branch).target - target_sha = find_branch(base_branch).target - has_changes = is_there_something_to_merge?(source_sha, target_sha) + if success && !create_mr + source_sha = find_branch(target_branch).target + target_sha = find_branch(base_branch).target + has_changes = is_there_something_to_merge?(source_sha, target_sha) - if has_changes && !create_mr - status = revert_commit(user, commit, base_branch, base_branch) + if has_changes + success = revert_commit(user, commit, base_branch, base_branch) + end end - has_changes && status + has_changes && success end def revert_commit(user, commit, target_branch, base_branch) diff --git a/app/services/commits/revert_service.rb b/app/services/commits/revert_service.rb index 730e2017e8d..5ac2853019b 100644 --- a/app/services/commits/revert_service.rb +++ b/app/services/commits/revert_service.rb @@ -14,7 +14,9 @@ module Commits if commit success else - error("Something went wrong. Your changes were not committed") + error("Sorry, we cannot revert this commit automatically. + It may have already been reverted, or a more recent commit may + have updated some of its content.") end rescue Repository::CommitError, Gitlab::Git::Repository::InvalidBlobName, GitHooksService::PreReceiveError, ValidationError => ex error(ex.message) @@ -26,7 +28,7 @@ module Commits # Create branch with revert commit reverted = repository.revert(current_user, @commit, @target_branch, @create_merge_request) - unless @create_merge_request + if reverted && !@create_merge_request repository.rm_branch(current_user, @commit.revert_branch_name) end -- GitLab