cache the ref => sha lookup

This commit is contained in:
rick
2010-08-24 12:39:26 -07:00
parent 3eeed9ba1e
commit 0500c7e10c
3 changed files with 16 additions and 10 deletions
+6 -7
View File
@@ -246,15 +246,14 @@ module Gollum
#
# Returns a Gollum::Page or nil if the page could not be found.
def find(name, version)
if commit = @wiki.repo.commit(version)
map = @wiki.tree_map_for(commit.id)
if page = find_page_in_tree(map, name)
page.version = commit
page
end
map = @wiki.tree_map_for(version)
if page = find_page_in_tree(map, name)
sha = @wiki.ref_map[version] || version
page.version = Grit::Commit.create(@wiki.repo, :id => sha)
page
end
rescue Grit::GitRuby::Repository::NoSuchShaFound
end
# Find a page in a given tree.
#
# map - The Array tree map from Wiki#tree_map.
+9 -3
View File
@@ -135,7 +135,9 @@ module Gollum
parents = pcommit ? [pcommit] : []
actor = Grit::Actor.new(commit[:name], commit[:email])
index.commit(commit[:message], parents, actor)
sha = index.commit(commit[:message], parents, actor)
@ref_map.clear
sha
end
# Public: Update an existing page with new content. The location of the
@@ -172,7 +174,9 @@ module Gollum
end
actor = Grit::Actor.new(commit[:name], commit[:email])
index.commit(commit[:message], [pcommit], actor)
sha = index.commit(commit[:message], [pcommit], actor)
@ref_map.clear
sha
end
# Public: Delete a page.
@@ -192,7 +196,9 @@ module Gollum
index.delete(page.path)
actor = Grit::Actor.new(commit[:name], commit[:email])
index.commit(commit[:message], [pcommit], actor)
sha = index.commit(commit[:message], [pcommit], actor)
@ref_map.clear
sha
end
# Public: Lists all pages for this wiki.
+1
View File
@@ -349,6 +349,7 @@ context "Markup" do
index.add("greek/Bilbo-Baggins.md", content)
index.commit("Add alpha.jpg")
@wiki.clear_cache
page = @wiki.page("Bilbo Baggins")
rendered = Gollum::Markup.new(page).render
assert_equal output, rendered