@@ -94,27 +94,24 @@ def blob?
94
94
95
95
class Tree < AbstractObject
96
96
97
- @trees = nil
98
- @blobs = nil
99
-
100
97
def initialize ( base , sha , mode = nil )
101
98
super ( base , sha )
102
99
@mode = mode
100
+ @trees = nil
101
+ @blobs = nil
103
102
end
104
103
105
104
def children
106
105
blobs . merge ( subtrees )
107
106
end
108
107
109
108
def blobs
110
- check_tree
111
- @blobs
109
+ @blobs ||= check_tree [ :blobs ]
112
110
end
113
111
alias_method :files , :blobs
114
112
115
113
def trees
116
- check_tree
117
- @trees
114
+ @trees ||= check_tree [ :trees ]
118
115
end
119
116
alias_method :subtrees , :trees
120
117
alias_method :subdirectories , :trees
@@ -135,13 +132,23 @@ def tree?
135
132
136
133
# actually run the git command
137
134
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 ] )
144
142
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
+ }
145
152
end
146
153
147
154
end
0 commit comments