Commit 5e8aca21 authored by Douwe Maan's avatar Douwe Maan

Don't display comment on unchanged line on both sides in parallel diff

parent c0c39426
...@@ -66,12 +66,12 @@ module DiffHelper ...@@ -66,12 +66,12 @@ module DiffHelper
discussions_left = discussions_right = nil discussions_left = discussions_right = nil
if left && (left.unchanged? || left.discussable?) if left && left.discussable? && (left.unchanged? || left.removed?)
line_code = diff_file.line_code(left) line_code = diff_file.line_code(left)
discussions_left = @grouped_diff_discussions[line_code] discussions_left = @grouped_diff_discussions[line_code]
end end
if right&.discussable? if right && right.discussable? && right.added?
line_code = diff_file.line_code(right) line_code = diff_file.line_code(right)
discussions_right = @grouped_diff_discussions[line_code] discussions_right = @grouped_diff_discussions[line_code]
end end
......
...@@ -42,7 +42,7 @@ class LegacyDiffNote < Note ...@@ -42,7 +42,7 @@ class LegacyDiffNote < Note
end end
def for_line?(line) def for_line?(line)
!line.meta? && diff_file.line_code(line) == self.line_code line.discussable? && diff_file.line_code(line) == self.line_code
end end
def original_line_code def original_line_code
......
...@@ -42,25 +42,25 @@ module Gitlab ...@@ -42,25 +42,25 @@ module Gitlab
end end
def added? def added?
type == 'new' || type == 'new-nonewline' %w[new new-nonewline].include?(type)
end end
def removed? def removed?
type == 'old' || type == 'old-nonewline' %w[old old-nonewline].include?(type)
end
def rich_text
@parent_file.highlight_lines! if @parent_file && !@rich_text
@rich_text
end end
def meta? def meta?
type == 'match' %w[match new-nonewline old-nonewline].include?(type)
end end
def discussable? def discussable?
!['match', 'new-nonewline', 'old-nonewline'].include?(type) !meta?
end
def rich_text
@parent_file.highlight_lines! if @parent_file && !@rich_text
@rich_text
end end
def as_json(opts = nil) def as_json(opts = nil)
......
...@@ -14,16 +14,7 @@ module Gitlab ...@@ -14,16 +14,7 @@ module Gitlab
lines = [] lines = []
highlighted_diff_lines = diff_file.highlighted_diff_lines highlighted_diff_lines = diff_file.highlighted_diff_lines
highlighted_diff_lines.each do |line| highlighted_diff_lines.each do |line|
if line.meta? || line.unchanged? if line.removed?
# line in the right panel is the same as in the left one
lines << {
left: line,
right: line
}
free_right_index = nil
i += 1
elsif line.removed?
lines << { lines << {
left: line, left: line,
right: nil right: nil
...@@ -51,6 +42,15 @@ module Gitlab ...@@ -51,6 +42,15 @@ module Gitlab
free_right_index = nil free_right_index = nil
i += 1 i += 1
end end
elsif line.meta? || line.unchanged?
# line in the right panel is the same as in the left one
lines << {
left: line,
right: line
}
free_right_index = nil
i += 1
end end
end end
......
...@@ -148,12 +148,21 @@ describe DiffHelper do ...@@ -148,12 +148,21 @@ describe DiffHelper do
it 'puts comments on added lines' do it 'puts comments on added lines' do
left = Gitlab::Diff::Line.new('\\nonewline', 'old-nonewline', 3, 3, 3) left = Gitlab::Diff::Line.new('\\nonewline', 'old-nonewline', 3, 3, 3)
right = Gitlab::Diff::Line.new('new line', 'add', 3, 3, 3) right = Gitlab::Diff::Line.new('new line', 'new', 3, 3, 3)
result = helper.parallel_diff_discussions(left, right, diff_file) result = helper.parallel_diff_discussions(left, right, diff_file)
expect(result).to eq([nil, 'comment']) expect(result).to eq([nil, 'comment'])
end end
it 'puts comments on unchanged lines' do
left = Gitlab::Diff::Line.new('unchanged line', nil, 3, 3, 3)
right = Gitlab::Diff::Line.new('unchanged line', nil, 3, 3, 3)
result = helper.parallel_diff_discussions(left, right, diff_file)
expect(result).to eq(['comment', nil])
end
end end
describe "#diff_match_line" do describe "#diff_match_line" 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