use cached tree map when finding files

This commit is contained in:
rick
2010-08-24 11:25:05 -07:00
parent cc3d9529cc
commit d606511fdf
2 changed files with 13 additions and 9 deletions
+8 -7
View File
@@ -46,13 +46,14 @@ module Gollum
# #
# Returns a Gollum::File or nil if the file could not be found. # Returns a Gollum::File or nil if the file could not be found.
def find(name, version) def find(name, version)
if commit = @wiki.repo.commit(version) checked = name.downcase
if (blob = commit.tree / name) && blob.is_a?(Grit::Blob) map = @wiki.tree_map_for(version)
@blob = blob sha = @wiki.ref_map[version] || version
@path = name if pair = map.detect { |(path, _)| path == checked }
@version = commit @path = name
self @blob = Grit::Blob.create(@wiki.repo, :id => pair.last, :name => ::File.basename(@path))
end @version = Grit::Commit.create(@wiki.repo, :id => sha)
self
end end
end end
end end
+5 -2
View File
@@ -11,9 +11,12 @@ context "File" do
end end
test "existing file" do test "existing file" do
file = @wiki.file("Mordor/todo.txt") commit = @wiki.repo.commits.first
file = @wiki.file("Mordor/todo.txt")
assert_equal "[ ] Write section on Ents\n", file.raw_data assert_equal "[ ] Write section on Ents\n", file.raw_data
assert_equal @wiki.repo.commits.first.id, file.version.id assert_equal 'todo.txt', file.name
assert_equal commit.id, file.version.id
assert_equal commit.author.name, file.version.author.name
end end
test "accessing tree" do test "accessing tree" do