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
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/git/wiki.rb32
-rw-r--r--lib/gitlab/gitaly_client/wiki_service.rb26
2 files changed, 17 insertions, 41 deletions
diff --git a/lib/gitlab/git/wiki.rb b/lib/gitlab/git/wiki.rb
index 305bc9b66b0..4ed78daa443 100644
--- a/lib/gitlab/git/wiki.rb
+++ b/lib/gitlab/git/wiki.rb
@@ -93,15 +93,15 @@ module Gitlab
# :per_page - The number of items per page.
# :limit - Total number of items to return.
def page_versions(page_path, options = {})
- puts '-' * 80
- puts options
- puts '-' * 80
- puts
-
- byebug
@repository.gitaly_migrate(:wiki_page_versions) do |is_enabled|
if is_enabled
- gitaly_wiki_client.page_versions(page_path, pagination_params(options))
+ versions = gitaly_wiki_client.page_versions(page_path, options)
+
+ # Gitaly uses gollum-lib to get the versions. Gollum defaults to 20
+ # per page, but also fetches 20 if `limit` or `per_page` < 20.
+ # Slicing returns an array with the expected number of items.
+ slice_bound = options[:limit] || options[:per_page] || Gollum::Page.per_page
+ versions[0..slice_bound]
else
current_page = gollum_page_by_path(page_path)
@@ -136,21 +136,15 @@ module Gitlab
# :per_page - The number of items per page.
# :limit - Total number of items to return.
def commits_from_page(gollum_page, options = {})
- pagination_options = pagination_params(options)
+ unless options[:limit]
+ options[:offset] = ([1, options.delete(:page).to_i].max - 1) * Gollum::Page.per_page
+ options[:limit] = (options.delete(:per_page) || Gollum::Page.per_page).to_i
+ end
@repository.log(ref: gollum_page.last_version.id,
path: gollum_page.path,
- limit: pagination_options[:limit],
- offset: pagination_options[:offset])
- end
-
- def pagination_params(options)
- return options if options[:limit]
-
- options = options.dup
- options[:offset] = ([1, options.delete(:page).to_i].max - 1) * Gollum::Page.per_page
- options[:limit] = (options.delete(:per_page) || Gollum::Page.per_page).to_i
- options
+ limit: options[:limit],
+ offset: options[:offset])
end
def gollum_wiki
diff --git a/lib/gitlab/gitaly_client/wiki_service.rb b/lib/gitlab/gitaly_client/wiki_service.rb
index fa7e416504d..a98c3c0b160 100644
--- a/lib/gitlab/gitaly_client/wiki_service.rb
+++ b/lib/gitlab/gitaly_client/wiki_service.rb
@@ -108,38 +108,20 @@ module Gitlab
def page_versions(page_path, options)
request = Gitaly::WikiGetPageVersionsRequest.new(
repository: @gitaly_repo,
- page_path: encode_binary(page_path)
+ page_path: encode_binary(page_path),
+ page: options[:page] || 1,
+ per_page: options[:per_page] || Gollum::Page.per_page
)
- min_index = options[:offset].to_i
- max_index = min_index + options[:limit].to_i
- byebug
-
stream = GitalyClient.call(@repository.storage, :wiki_service, :wiki_get_page_versions, request)
- version_index = 0
versions = []
-
- # Allow limit and offset to be send to Gitaly: TODO
stream.each do |message|
- puts 'ยง' * 80
- puts version_index
-
message.versions.each do |version|
- case version_index
- when min_index...max_index
- versions << new_wiki_page_version(version)
- when max_index..Float::INFINITY
- return versions
- end
-
- version_index += 1
- puts version_index
+ versions << new_wiki_page_version(version)
end
end
- # when we're requesting page 99 but the stream doesn't go that far, whatever
- # is fetched thus far
versions
end