recover from bad shas

This commit is contained in:
rick
2010-10-13 09:52:04 -07:00
parent 497b36ad2b
commit 54917bbdb9
3 changed files with 24 additions and 10 deletions
+10 -7
View File
@@ -47,8 +47,9 @@ module Gollum
end
def tree(ref)
sha = ref_to_sha(ref)
get_cache(:tree, sha) { tree!(sha) }
if sha = ref_to_sha(ref)
get_cache(:tree, sha) { tree!(sha) }
end
end
def blob(sha)
@@ -62,9 +63,10 @@ module Gollum
if sha = get_cache(:ref, ref)
commit(sha)
else
cm = commit!(ref)
set_cache(:ref, ref, cm.id)
set_cache(:commit, cm.id, cm)
if cm = commit!(ref)
set_cache(:ref, ref, cm.id)
set_cache(:commit, cm.id, cm)
end
end
end
end
@@ -95,6 +97,7 @@ module Gollum
def ref_to_sha!(ref)
@repo.git.rev_list({:max_count=>1}, ref)
rescue Grit::GitRuby::Repository::NoSuchShaFound
end
def tree!(sha)
@@ -119,12 +122,12 @@ module Gollum
if value.nil? && block_given?
set_cache(name, key, value = yield)
end
value
value == :_nil ? nil : value
end
def set_cache(name, key, value)
cache = instance_variable_get("@#{name}_map")
cache[key] = value
cache[key] = value || :_nil
end
def multi_get(name, keys)
+1 -1
View File
@@ -289,7 +289,7 @@ module Gollum
#
# Returns a Gollum::Page or nil if the page could not be found.
def find_page_in_tree(map, name, checked_dir = nil)
return nil if name.to_s.empty?
return nil if !map || name.to_s.empty?
if checked_dir = BlobEntry.normalize_dir(checked_dir)
checked_dir.downcase!
end