@@ -165,15 +165,31 @@ impl Info {
165
165
& config. bot_regex_pattern ,
166
166
config. number_of_authors ,
167
167
) ?;
168
- let ( repo_name, repo_url) = internal_repo. get_name_and_url ( ) ?;
168
+ let workdir = internal_repo. get_work_dir ( ) ?;
169
+
169
170
let pending_changes = std:: thread:: spawn ( {
170
171
let git_dir = repo. path ( ) . to_owned ( ) ;
171
172
move || {
172
173
let repo = git2:: Repository :: open ( git_dir) ?;
173
174
repo:: get_pending_changes ( & repo)
174
175
}
175
176
} ) ;
177
+ let languages_handle = std:: thread:: spawn ( {
178
+ let ignored_directories = config. ignored_directories . clone ( ) ;
179
+ let language_types = config. language_types . clone ( ) ;
180
+ let include_hidden = config. include_hidden ;
181
+ let workdir = workdir. clone ( ) ;
182
+ move || {
183
+ langs:: get_language_statistics (
184
+ & workdir,
185
+ & ignored_directories,
186
+ & language_types,
187
+ include_hidden,
188
+ )
189
+ }
190
+ } ) ;
176
191
192
+ let ( repo_name, repo_url) = internal_repo. get_name_and_url ( ) ?;
177
193
let head_refs = internal_repo. get_head_refs ( ) ?;
178
194
let version = internal_repo. get_version ( ) ?;
179
195
let git_username = internal_repo. get_git_username ( ) ?;
@@ -184,15 +200,18 @@ impl Info {
184
200
let ( authors, contributors) = internal_repo. take_authors ( config. show_email ) ;
185
201
let last_change = internal_repo. get_date_of_last_commit ( config. iso_time ) ;
186
202
let ( repo_size, file_count) = internal_repo. get_repo_size ( ) ;
187
- let workdir = internal_repo. get_work_dir ( ) ?;
188
203
let license = Detector :: new ( ) ?. get_license ( & workdir) ?;
189
204
let dependencies = DependencyDetector :: new ( ) . get_dependencies ( & workdir) ?;
190
- let ( languages, lines_of_code) = langs:: get_language_statistics (
191
- & workdir,
192
- & config. ignored_directories ,
193
- & config. language_types ,
194
- config. include_hidden ,
195
- ) ?;
205
+
206
+ let pending_changes = pending_changes
207
+ . join ( )
208
+ . ok ( )
209
+ . context ( "BUG: panic in pending-changes thread" ) ??;
210
+
211
+ let ( languages, lines_of_code) = languages_handle
212
+ . join ( )
213
+ . ok ( )
214
+ . context ( "BUG: panic in language statistics thread" ) ??;
196
215
let dominant_language = langs:: get_dominant_language ( & languages) ;
197
216
let ascii_colors = get_ascii_colors (
198
217
& config. ascii_language ,
@@ -209,10 +228,7 @@ impl Info {
209
228
number_of_tags,
210
229
number_of_branches,
211
230
head_refs,
212
- pending_changes : pending_changes
213
- . join ( )
214
- . ok ( )
215
- . context ( "BUG: panic in pending-changes thread" ) ??,
231
+ pending_changes,
216
232
version,
217
233
creation_date,
218
234
languages,
0 commit comments