diff --git a/lib/gollum/page.rb b/lib/gollum/page.rb index 175f49cc..6519062a 100644 --- a/lib/gollum/page.rb +++ b/lib/gollum/page.rb @@ -150,10 +150,20 @@ module Gollum # options - The options Hash: # :page - The Integer page number (default: 1). # :per_page - The Integer max count of items to return. + # :follow - Follow's a file across renames, but falls back + # to a slower Grit native call. (default: true) # # Returns an Array of Grit::Commit. def versions(options = {}) - @wiki.repo.log('master', @path, log_pagination_options(options)) + options[:follow] = true if !options.key?(:follow) + options = log_pagination_options(options) + if options[:follow] + options[:pretty] = 'raw' + log = @wiki.repo.git.native "log", options, "master", "--", @path + Grit::Commit.list_from_string(@wiki.repo, log) + else + @wiki.repo.log('master', @path, options) + end end # Public: The footer Page. diff --git a/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 b/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 new file mode 100644 index 00000000..59c822e2 Binary files /dev/null and b/test/examples/lotr.git/objects/0a/de1e2916346d4c1f2fb63b863fd3c16808fe44 differ diff --git a/test/examples/lotr.git/objects/2c/b9156ad383914561a8502fc70f5a1d887e48ad b/test/examples/lotr.git/objects/2c/b9156ad383914561a8502fc70f5a1d887e48ad new file mode 100644 index 00000000..cc4a8f47 --- /dev/null +++ b/test/examples/lotr.git/objects/2c/b9156ad383914561a8502fc70f5a1d887e48ad @@ -0,0 +1,4 @@ +xA0 9WXÀ4ۑ8 0CUmqdقK{/G{ѹWGi U8&V*/Rל +0> +L8RLpXGy<+8qi2/d \_ 8ϝŏLv: eU=&Fwc3Lf':$Ne2ܖB4$~ >8'UDžn|RE +[,pFOph5*zXYx ů+6Y;{.Y)YuŒ޴e%ϳ._&8Qd߆=6!% fuf5].7֛y948( false).map { |v| v.id } + end + test "specific page version" do page = @wiki.page('Bilbo Baggins', 'fbabba862dfa7ac35b39042dd4ad780c9f67b8cb') assert_equal 'fbabba862dfa7ac35b39042dd4ad780c9f67b8cb', page.version.id @@ -67,7 +79,7 @@ context "Page" do end test "title from filename with html contents" do - page = @wiki.page('My Precious') + page = @wiki.page('My Precious', '0ed8cbe0a25235bd867e65193c7d837c66b328ef') assert_equal 'My Precious', page.title end diff --git a/test/test_wiki.rb b/test/test_wiki.rb index bdd64416..086b1793 100644 --- a/test/test_wiki.rb +++ b/test/test_wiki.rb @@ -35,7 +35,7 @@ context "Wiki" do test "list pages" do pages = @wiki.pages assert_equal \ - %w(Bilbo-Baggins.md Eye-Of-Sauron.md Home.textile My-Precious.md), + %w(Bilbo-Baggins.md Eye-Of-Sauron.md Home.textile My-Precious.md), pages.map { |p| p.filename }.sort end end