Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-10-10 03:06:44 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2019-10-10 03:06:44 +0300
commit308146dc398fd4c13453048105498018459e0985 (patch)
treed843eb63c1672e4b18c483907e2cd4aa7fca708e /lib/gitlab/diff
parent4b28d5ae770c6bd332283a3f13ceae06329c409b (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/diff')
-rw-r--r--lib/gitlab/diff/file_collection/merge_request_diff_batch.rb4
-rw-r--r--lib/gitlab/diff/lines_unfolder.rb2
-rw-r--r--lib/gitlab/diff/position.rb4
-rw-r--r--lib/gitlab/diff/position_collection.rb31
4 files changed, 40 insertions, 1 deletions
diff --git a/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb b/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
index c6d1e0b93a7..663326e01d5 100644
--- a/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
+++ b/lib/gitlab/diff/file_collection/merge_request_diff_batch.rb
@@ -29,6 +29,10 @@ module Gitlab
}
end
+ def diff_file_paths
+ diff_files.map(&:file_path)
+ end
+
override :diffs
def diffs
strong_memoize(:diffs) do
diff --git a/lib/gitlab/diff/lines_unfolder.rb b/lib/gitlab/diff/lines_unfolder.rb
index 0bd18fe9622..6def3a074a3 100644
--- a/lib/gitlab/diff/lines_unfolder.rb
+++ b/lib/gitlab/diff/lines_unfolder.rb
@@ -54,7 +54,7 @@ module Gitlab
def unfold_required?
strong_memoize(:unfold_required) do
next false unless @diff_file.text?
- next false unless @position.on_text? && @position.unchanged?
+ next false unless @position.unfoldable?
next false if @diff_file.new_file? || @diff_file.deleted_file?
next false unless @position.old_line
# Invalid position (MR import scenario)
diff --git a/lib/gitlab/diff/position.rb b/lib/gitlab/diff/position.rb
index 5fe06b9c5e6..8b99fd5cd42 100644
--- a/lib/gitlab/diff/position.rb
+++ b/lib/gitlab/diff/position.rb
@@ -79,6 +79,10 @@ module Gitlab
formatter.line_age
end
+ def unfoldable?
+ on_text? && unchanged?
+ end
+
def unchanged?
type.nil?
end
diff --git a/lib/gitlab/diff/position_collection.rb b/lib/gitlab/diff/position_collection.rb
new file mode 100644
index 00000000000..59c60f77aaa
--- /dev/null
+++ b/lib/gitlab/diff/position_collection.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Diff
+ class PositionCollection
+ include Enumerable
+
+ # collection - An array of Gitlab::Diff::Position
+ def initialize(collection, diff_head_sha)
+ @collection = collection
+ @diff_head_sha = diff_head_sha
+ end
+
+ def each(&block)
+ @collection.each(&block)
+ end
+
+ def concat(positions)
+ tap { @collection.concat(positions) }
+ end
+
+ # Doing a lightweight filter in-memory given we're not prepared for querying
+ # positions (https://gitlab.com/gitlab-org/gitlab/issues/33271).
+ def unfoldable
+ select do |position|
+ position.unfoldable? && position.head_sha == @diff_head_sha
+ end
+ end
+ end
+ end
+end