Handle Gitaly aborted merge due to branch update
This commit is contained in:
parent
48dacd5e74
commit
8cf0ea4469
2 changed files with 15 additions and 0 deletions
|
@ -101,6 +101,7 @@ module Gitlab
|
||||||
request_enum.push(Gitaly::UserMergeBranchRequest.new(apply: true))
|
request_enum.push(Gitaly::UserMergeBranchRequest.new(apply: true))
|
||||||
|
|
||||||
branch_update = response_enum.next.branch_update
|
branch_update = response_enum.next.branch_update
|
||||||
|
return if branch_update.nil?
|
||||||
raise Gitlab::Git::CommitError.new('failed to apply merge to branch') unless branch_update.commit_id.present?
|
raise Gitlab::Git::CommitError.new('failed to apply merge to branch') unless branch_update.commit_id.present?
|
||||||
|
|
||||||
Gitlab::Git::OperationService::BranchUpdate.from_gitaly(branch_update)
|
Gitlab::Git::OperationService::BranchUpdate.from_gitaly(branch_update)
|
||||||
|
|
|
@ -1719,6 +1719,20 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
||||||
expect(result.repo_created).to eq(false)
|
expect(result.repo_created).to eq(false)
|
||||||
expect(result.branch_created).to eq(false)
|
expect(result.branch_created).to eq(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'returns nil if there was a concurrent branch update' do
|
||||||
|
concurrent_update_id = '33f3729a45c02fc67d00adb1b8bca394b0e761d9'
|
||||||
|
result = repository.merge(user, source_sha, target_branch, 'Test merge') do
|
||||||
|
# This ref update should make the merge fail
|
||||||
|
repository.write_ref(Gitlab::Git::BRANCH_REF_PREFIX + target_branch, concurrent_update_id)
|
||||||
|
end
|
||||||
|
|
||||||
|
# This 'nil' signals that the merge was not applied
|
||||||
|
expect(result).to be_nil
|
||||||
|
|
||||||
|
# Our concurrent ref update should not have been reversed
|
||||||
|
expect(repository.find_branch(target_branch).target).to eq(concurrent_update_id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with gitaly' do
|
context 'with gitaly' do
|
||||||
|
|
Loading…
Reference in a new issue