From de33ae22c4ee389afc4a9e15b3edab17d4528321 Mon Sep 17 00:00:00 2001 From: scott Chacon Date: Thu, 15 Nov 2007 16:37:22 -0800 Subject: added object content caching --- lib/git/object.rb | 6 ++++-- tests/units/test_index_ops.rb | 2 +- tests/units/test_object.rb | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/git/object.rb b/lib/git/object.rb index 33c3e38..afda923 100644 --- a/lib/git/object.rb +++ b/lib/git/object.rb @@ -10,7 +10,8 @@ module Git attr_accessor :sha, :size, :type, :mode @base = nil - + @contents = nil + def initialize(base, sha) @base = base @sha = sha.to_s @@ -18,8 +19,9 @@ module Git setup end + # caches the contents of this call in memory def contents - @base.lib.object_contents(@sha) + @contents || @contents = @base.lib.object_contents(@sha) end def contents_array diff --git a/tests/units/test_index_ops.rb b/tests/units/test_index_ops.rb index de3a9c3..f92ae9e 100644 --- a/tests/units/test_index_ops.rb +++ b/tests/units/test_index_ops.rb @@ -23,7 +23,7 @@ class TestIndexOps < Test::Unit::TestCase assert(!g.status.untracked.assoc('test-file')) assert(!g.status.changed.assoc('example.txt')) - append_file('example.txt', 'hahahaha') + new_file('example.txt', 'hahahaha') assert(g.status.changed.assoc('example.txt')) g.add diff --git a/tests/units/test_object.rb b/tests/units/test_object.rb index acc32b0..c6ee5ce 100644 --- a/tests/units/test_object.rb +++ b/tests/units/test_object.rb @@ -96,6 +96,7 @@ class TestObject < Test::Unit::TestCase def test_blob_contents o = @git.object('v2.6:example.txt') assert_equal('replace with new text', o.contents) + assert_equal('replace with new text', o.contents) # this should be cached end def test_revparse -- cgit