BigW Consortium Gitlab

Commit a0ae8861 by Sean McGivern

Merge branch 'gitaly-merge-nil' into 'master'

Handle Gitaly aborted merge due to branch update Closes gitaly#854 See merge request gitlab-org/gitlab-ce!16116
parents 0eaa3c55 449b59ec
...@@ -101,6 +101,7 @@ module Gitlab ...@@ -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)
......
...@@ -1727,6 +1727,20 @@ describe Gitlab::Git::Repository, seed_helper: true do ...@@ -1727,6 +1727,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 undone
expect(repository.find_branch(target_branch).target).to eq(concurrent_update_id)
end
end end
context 'with gitaly' do context 'with gitaly' do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment