Skip to content

Commit 209d9aa

Browse files
Cleaning Git::Object a little bit
1 parent 2116cf9 commit 209d9aa

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

lib/git/object.rb

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -94,27 +94,24 @@ def blob?
9494

9595
class Tree < AbstractObject
9696

97-
@trees = nil
98-
@blobs = nil
99-
10097
def initialize(base, sha, mode = nil)
10198
super(base, sha)
10299
@mode = mode
100+
@trees = nil
101+
@blobs = nil
103102
end
104103

105104
def children
106105
blobs.merge(subtrees)
107106
end
108107

109108
def blobs
110-
check_tree
111-
@blobs
109+
@blobs ||= check_tree[:blobs]
112110
end
113111
alias_method :files, :blobs
114112

115113
def trees
116-
check_tree
117-
@trees
114+
@trees ||= check_tree[:trees]
118115
end
119116
alias_method :subtrees, :trees
120117
alias_method :subdirectories, :trees
@@ -135,13 +132,23 @@ def tree?
135132

136133
# actually run the git command
137134
def check_tree
138-
unless @trees
139-
@trees = {}
140-
@blobs = {}
141-
data = @base.lib.ls_tree(@objectish)
142-
data['tree'].each { |k, d| @trees[k] = Git::Object::Tree.new(@base, d[:sha], d[:mode]) }
143-
data['blob'].each { |k, d| @blobs[k] = Git::Object::Blob.new(@base, d[:sha], d[:mode]) }
135+
@trees = {}
136+
@blobs = {}
137+
138+
data = @base.lib.ls_tree(@objectish)
139+
140+
data['tree'].each do |key, tree|
141+
@trees[key] = Git::Object::Tree.new(@base, tree[:sha], tree[:mode])
144142
end
143+
144+
data['blob'].each do |key, blob|
145+
@blobs[key] = Git::Object::Blob.new(@base, blob[:sha], blob[:mode])
146+
end
147+
148+
{
149+
:trees => @trees,
150+
:blobs => @blobs
151+
}
145152
end
146153

147154
end

0 commit comments

Comments
 (0)