summaryrefslogtreecommitdiff
path: root/lib/gitlab/conflict
diff options
context:
space:
mode:
authorSean McGivern <sean@gitlab.com>2016-08-01 14:52:53 +0100
committerFatih Acet <acetfatih@gmail.com>2016-08-12 23:24:46 +0300
commitf3cf40b8aaeb19479443821a767c354cd203c24e (patch)
treeadf5b801363a5cba30c06c185e4163e9af863045 /lib/gitlab/conflict
parent10cf933f70657eb0c413259319a103e15abd9f5c (diff)
downloadgitlab-ce-f3cf40b8aaeb19479443821a767c354cd203c24e.tar.gz
Handle case where one side deleted the file
Diffstat (limited to 'lib/gitlab/conflict')
-rw-r--r--lib/gitlab/conflict/file_collection.rb8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/gitlab/conflict/file_collection.rb b/lib/gitlab/conflict/file_collection.rb
index e621a76a7de..5122a5b2111 100644
--- a/lib/gitlab/conflict/file_collection.rb
+++ b/lib/gitlab/conflict/file_collection.rb
@@ -1,6 +1,9 @@
module Gitlab
module Conflict
class FileCollection
+ class ConflictSideMissing < StandardError
+ end
+
attr_reader :merge_request, :our_commit, :their_commit
def initialize(merge_request)
@@ -39,10 +42,9 @@ module Gitlab
def files
@files ||= merge_index.conflicts.map do |conflict|
- their_path = conflict[:theirs][:path]
- our_path = conflict[:ours][:path]
+ raise ConflictSideMissing unless conflict[:theirs] && conflict[:ours]
- Gitlab::Conflict::File.new(merge_index.merge_file(our_path),
+ Gitlab::Conflict::File.new(merge_index.merge_file(conflict[:ours][:path]),
conflict,
diff_refs: merge_request.diff_refs,
repository: repository)