diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-01-24 09:34:15 +0000 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-01-24 09:34:15 +0000 |
commit | d92bd8e2a5ca13d8aac58eab72e715ce792f13fb (patch) | |
tree | f8055511999973c1f6bb0113e234e9f04d3aa438 | |
parent | f8385188f0eb2ee526404d4529f167db7ce21a63 (diff) | |
parent | 0b965528c6dd6db67adf5b86c62c19088ebe65f5 (diff) | |
download | gitlab-ce-d92bd8e2a5ca13d8aac58eab72e715ce792f13fb.tar.gz |
Merge branch 'fix/gitaly-can-be-merged-for-missing-conflict-files' into 'master'
GitalyClient::ConflictsService#conflicts? should return true for conflicts with missing side
See merge request gitlab-org/gitlab-ce!16655
-rw-r--r-- | lib/gitlab/gitaly_client/conflicts_service.rb | 5 | ||||
-rw-r--r-- | spec/models/repository_spec.rb | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/gitlab/gitaly_client/conflicts_service.rb b/lib/gitlab/gitaly_client/conflicts_service.rb index 2565d537aff..e14734495a8 100644 --- a/lib/gitlab/gitaly_client/conflicts_service.rb +++ b/lib/gitlab/gitaly_client/conflicts_service.rb @@ -25,6 +25,11 @@ module Gitlab def conflicts? list_conflict_files.any? + rescue GRPC::FailedPrecondition + # The server raises this exception when it encounters ConflictSideMissing, which + # means a conflict exists but its `theirs` or `ours` data is nil due to a non-existent + # file in one of the trees. + true end def resolve_conflicts(target_repository, resolution, source_branch, target_branch) diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index baaa9e3ef44..8f406253f39 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -365,12 +365,18 @@ describe Repository do it { is_expected.to be_truthy } end - context 'non-mergeable branches' do + context 'non-mergeable branches without conflict sides missing' do subject { repository.can_be_merged?('bb5206fee213d983da88c47f9cf4cc6caf9c66dc', 'feature') } it { is_expected.to be_falsey } end + context 'non-mergeable branches with conflict sides missing' do + subject { repository.can_be_merged?('conflict-missing-side', 'conflict-start') } + + it { is_expected.to be_falsey } + end + context 'non merged branch' do subject { repository.merged_to_root_ref?('fix') } |