@@ -165,15 +165,31 @@ impl Info {
165165 & config. bot_regex_pattern ,
166166 config. number_of_authors ,
167167 ) ?;
168- let ( repo_name, repo_url) = internal_repo. get_name_and_url ( ) ?;
168+ let workdir = internal_repo. get_work_dir ( ) ?;
169+
169170 let pending_changes = std:: thread:: spawn ( {
170171 let git_dir = repo. path ( ) . to_owned ( ) ;
171172 move || {
172173 let repo = git2:: Repository :: open ( git_dir) ?;
173174 repo:: get_pending_changes ( & repo)
174175 }
175176 } ) ;
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+ } ) ;
176191
192+ let ( repo_name, repo_url) = internal_repo. get_name_and_url ( ) ?;
177193 let head_refs = internal_repo. get_head_refs ( ) ?;
178194 let version = internal_repo. get_version ( ) ?;
179195 let git_username = internal_repo. get_git_username ( ) ?;
@@ -184,15 +200,18 @@ impl Info {
184200 let ( authors, contributors) = internal_repo. take_authors ( config. show_email ) ;
185201 let last_change = internal_repo. get_date_of_last_commit ( config. iso_time ) ;
186202 let ( repo_size, file_count) = internal_repo. get_repo_size ( ) ;
187- let workdir = internal_repo. get_work_dir ( ) ?;
188203 let license = Detector :: new ( ) ?. get_license ( & workdir) ?;
189204 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" ) ??;
196215 let dominant_language = langs:: get_dominant_language ( & languages) ;
197216 let ascii_colors = get_ascii_colors (
198217 & config. ascii_language ,
@@ -209,10 +228,7 @@ impl Info {
209228 number_of_tags,
210229 number_of_branches,
211230 head_refs,
212- pending_changes : pending_changes
213- . join ( )
214- . ok ( )
215- . context ( "BUG: panic in pending-changes thread" ) ??,
231+ pending_changes,
216232 version,
217233 creation_date,
218234 languages,
0 commit comments