diff options
Diffstat (limited to 'lib/gitlab/git')
-rw-r--r-- | lib/gitlab/git/blame.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/git/commit.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/git/diff_collection.rb | 49 | ||||
-rw-r--r-- | lib/gitlab/git/merge_base.rb | 3 | ||||
-rw-r--r-- | lib/gitlab/git/patches/commit_patches.rb | 5 | ||||
-rw-r--r-- | lib/gitlab/git/repository.rb | 8 | ||||
-rw-r--r-- | lib/gitlab/git/tag.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/git/wiki.rb | 13 | ||||
-rw-r--r-- | lib/gitlab/git/wiki_file.rb | 24 |
9 files changed, 71 insertions, 43 deletions
diff --git a/lib/gitlab/git/blame.rb b/lib/gitlab/git/blame.rb index 9e24306c05e..a5b1b7d914b 100644 --- a/lib/gitlab/git/blame.rb +++ b/lib/gitlab/git/blame.rb @@ -30,8 +30,10 @@ module Gitlab end def process_raw_blame(output) - lines, final = [], [] - info, commits = {}, {} + lines = [] + final = [] + info = {} + commits = {} # process the output output.split("\n").each do |line| diff --git a/lib/gitlab/git/commit.rb b/lib/gitlab/git/commit.rb index ff99803d8de..51baed32935 100644 --- a/lib/gitlab/git/commit.rb +++ b/lib/gitlab/git/commit.rb @@ -390,7 +390,7 @@ module Gitlab @committer_name = commit.committer.name.dup @committer_email = commit.committer.email.dup @parent_ids = Array(commit.parent_ids) - @trailers = Hash[commit.trailers.map { |t| [t.key, t.value] }] + @trailers = commit.trailers.to_h { |t| [t.key, t.value] } end # Gitaly provides a UNIX timestamp in author.date.seconds, and a timezone diff --git a/lib/gitlab/git/diff_collection.rb b/lib/gitlab/git/diff_collection.rb index 19462e6cb02..fb947c80b7e 100644 --- a/lib/gitlab/git/diff_collection.rb +++ b/lib/gitlab/git/diff_collection.rb @@ -82,6 +82,30 @@ module Gitlab !!@overflow end + def overflow_max_lines? + !!@overflow_max_lines + end + + def overflow_max_bytes? + !!@overflow_max_bytes + end + + def overflow_max_files? + !!@overflow_max_files + end + + def collapsed_safe_lines? + !!@collapsed_safe_lines + end + + def collapsed_safe_files? + !!@collapsed_safe_files + end + + def collapsed_safe_bytes? + !!@collapsed_safe_bytes + end + def size @size ||= count # forces a loop using each method end @@ -103,10 +127,9 @@ module Gitlab end def decorate! - collection = each_with_index do |element, i| + each_with_index do |element, i| @array[i] = yield(element) end - collection end alias_method :to_ary, :to_a @@ -121,7 +144,15 @@ module Gitlab end def over_safe_limits?(files) - files >= safe_max_files || @line_count > safe_max_lines || @byte_count >= safe_max_bytes + if files >= safe_max_files + @collapsed_safe_files = true + elsif @line_count > safe_max_lines + @collapsed_safe_lines = true + elsif @byte_count >= safe_max_bytes + @collapsed_safe_bytes = true + end + + @collapsed_safe_files || @collapsed_safe_lines || @collapsed_safe_bytes end def expand_diff? @@ -154,6 +185,7 @@ module Gitlab if @enforce_limits && i >= max_files @overflow = true + @overflow_max_files = true break end @@ -166,10 +198,19 @@ module Gitlab @line_count += diff.line_count @byte_count += diff.diff.bytesize - if @enforce_limits && (@line_count >= max_lines || @byte_count >= max_bytes) + if @enforce_limits && @line_count >= max_lines + # This last Diff instance pushes us over the lines limit. We stop and + # discard it. + @overflow = true + @overflow_max_lines = true + break + end + + if @enforce_limits && @byte_count >= max_bytes # This last Diff instance pushes us over the lines limit. We stop and # discard it. @overflow = true + @overflow_max_bytes = true break end diff --git a/lib/gitlab/git/merge_base.rb b/lib/gitlab/git/merge_base.rb index b27f7038c26..905d72cadbf 100644 --- a/lib/gitlab/git/merge_base.rb +++ b/lib/gitlab/git/merge_base.rb @@ -6,7 +6,8 @@ module Gitlab include Gitlab::Utils::StrongMemoize def initialize(repository, refs) - @repository, @refs = repository, refs + @repository = repository + @refs = refs end # Returns the SHA of the first common ancestor diff --git a/lib/gitlab/git/patches/commit_patches.rb b/lib/gitlab/git/patches/commit_patches.rb index c62994432d3..1182db10c34 100644 --- a/lib/gitlab/git/patches/commit_patches.rb +++ b/lib/gitlab/git/patches/commit_patches.rb @@ -7,7 +7,10 @@ module Gitlab include Gitlab::Git::WrapsGitalyErrors def initialize(user, repository, branch, patch_collection) - @user, @repository, @branch, @patches = user, repository, branch, patch_collection + @user = user + @repository = repository + @branch = branch + @patches = patch_collection end def commit diff --git a/lib/gitlab/git/repository.rb b/lib/gitlab/git/repository.rb index e316d52ac05..3361cee733b 100644 --- a/lib/gitlab/git/repository.rb +++ b/lib/gitlab/git/repository.rb @@ -599,9 +599,9 @@ module Gitlab tags.find { |tag| tag.name == name } end - def merge_to_ref(user, source_sha, branch, target_ref, message, first_parent_ref, allow_conflicts) + def merge_to_ref(user, **kwargs) wrapped_gitaly_errors do - gitaly_operation_client.user_merge_to_ref(user, source_sha, branch, target_ref, message, first_parent_ref, allow_conflicts) + gitaly_operation_client.user_merge_to_ref(user, **kwargs) end end @@ -1017,6 +1017,10 @@ module Gitlab gitaly_repository_client.search_files_by_name(ref, safe_query) end + def search_files_by_regexp(filter, ref = 'HEAD') + gitaly_repository_client.search_files_by_regexp(ref, filter) + end + def find_commits_by_message(query, ref, path, limit, offset) wrapped_gitaly_errors do gitaly_commit_client diff --git a/lib/gitlab/git/tag.rb b/lib/gitlab/git/tag.rb index da86d6baf4a..568e894a02f 100644 --- a/lib/gitlab/git/tag.rb +++ b/lib/gitlab/git/tag.rb @@ -87,6 +87,10 @@ module Gitlab end end + def cache_key + "tag:" + Digest::SHA1.hexdigest([name, message, target, target_commit&.sha].join) + end + private def message_from_gitaly_tag diff --git a/lib/gitlab/git/wiki.rb b/lib/gitlab/git/wiki.rb index 55ff3c6caf1..75d6b949874 100644 --- a/lib/gitlab/git/wiki.rb +++ b/lib/gitlab/git/wiki.rb @@ -102,12 +102,6 @@ module Gitlab end end - def file(name, version) - wrapped_gitaly_errors do - gitaly_find_file(name, version) - end - end - # options: # :page - The Integer page number. # :per_page - The number of items per page. @@ -161,13 +155,6 @@ module Gitlab nil end - def gitaly_find_file(name, version) - wiki_file = gitaly_wiki_client.find_file(name, version) - return unless wiki_file - - Gitlab::Git::WikiFile.new(wiki_file) - end - def gitaly_list_pages(limit: 0, sort: nil, direction_desc: false, load_content: false) params = { limit: limit, sort: sort, direction_desc: direction_desc } diff --git a/lib/gitlab/git/wiki_file.rb b/lib/gitlab/git/wiki_file.rb index 7f09173f05c..c56a17c52f3 100644 --- a/lib/gitlab/git/wiki_file.rb +++ b/lib/gitlab/git/wiki_file.rb @@ -5,25 +5,11 @@ module Gitlab class WikiFile attr_reader :mime_type, :raw_data, :name, :path - # This class wraps Gitlab::GitalyClient::WikiFile - def initialize(gitaly_file) - @mime_type = gitaly_file.mime_type - @raw_data = gitaly_file.raw_data - @name = gitaly_file.name - @path = gitaly_file.path - end - - def self.from_blob(blob) - hash = { - name: File.basename(blob.name), - mime_type: blob.mime_type, - path: blob.path, - raw_data: blob.data - } - - gitaly_file = Gitlab::GitalyClient::WikiFile.new(hash) - - Gitlab::Git::WikiFile.new(gitaly_file) + def initialize(blob) + @mime_type = blob.mime_type + @raw_data = blob.data + @name = File.basename(blob.name) + @path = blob.path end end end |