diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/git/wiki.rb | 32 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client/wiki_service.rb | 26 |
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 |