@@ -8,15 +8,14 @@ use error_stack::{Report, Result, ResultExt};
88use fast_glob:: glob_match;
99use ignore:: { DirEntry , WalkBuilder , WalkParallel , WalkState } ;
1010use rayon:: iter:: { IntoParallelIterator , ParallelIterator } ;
11- use serde:: Deserialize ;
1211use tracing:: { instrument, warn} ;
1312
1413use crate :: {
1514 cache:: Cache ,
1615 config:: Config ,
17- files,
1816 project:: { DirectoryCodeownersFile , Error , Package , PackageType , Project , ProjectFile , Team , VendoredGem , deserializers} ,
1917 project_file_builder:: ProjectFileBuilder ,
18+ tracked_files,
2019} ;
2120
2221type AbsolutePath = PathBuf ;
@@ -62,17 +61,17 @@ impl<'a> ProjectBuilder<'a> {
6261 // Prune traversal early: skip heavy and irrelevant directories
6362 let ignore_dirs = self . config . ignore_dirs . clone ( ) ;
6463 let base_path = self . base_path . clone ( ) ;
65- let untracked_files = if should_skip_untracked_files ( & self . base_path , & self . config . codeowners_override_config_file_path ) {
66- files:: untracked_files ( & base_path) . unwrap_or_default ( )
67- } else {
68- vec ! [ ]
69- } ;
64+ let tracked_files = tracked_files:: find_tracked_files ( & self . base_path ) ;
7065
7166 builder. filter_entry ( move |entry : & DirEntry | {
7267 let path = entry. path ( ) ;
7368 let file_name = entry. file_name ( ) . to_str ( ) . unwrap_or ( "" ) ;
74- if !untracked_files. is_empty ( ) && untracked_files. contains ( & path. to_path_buf ( ) ) {
75- return false ;
69+ if let Some ( tracked_files) = & tracked_files {
70+ if let Some ( ft) = entry. file_type ( ) {
71+ if ft. is_file ( ) && !tracked_files. contains_key ( path) {
72+ return false ;
73+ }
74+ }
7675 }
7776 if let Some ( ft) = entry. file_type ( )
7877 && ft. is_dir ( )
@@ -298,29 +297,6 @@ fn matches_globs(path: &Path, globs: &[String]) -> bool {
298297 }
299298}
300299
301- fn should_skip_untracked_files ( base_path : & Path , codeowners_override_config_file_path : & str ) -> bool {
302- let path = base_path. join ( codeowners_override_config_file_path) ;
303- if !path. exists ( ) {
304- return false ;
305- }
306- if let Ok ( file) = File :: open ( path) {
307- #[ derive( Deserialize ) ]
308- struct OverrideConfig {
309- #[ serde( default ) ]
310- skip_untracked_files : bool ,
311- }
312-
313- let config: OverrideConfig = match serde_yaml:: from_reader ( file) {
314- Ok ( cfg) => cfg,
315- Err ( _) => return false ,
316- } ;
317-
318- return config. skip_untracked_files ;
319- }
320-
321- false
322- }
323-
324300fn ruby_package_owner ( path : & Path ) -> Result < Option < String > , Error > {
325301 let file = File :: open ( path) . change_context ( Error :: Io ) ?;
326302 let deserializer: deserializers:: RubyPackage = serde_yaml:: from_reader ( file) . change_context ( Error :: SerdeYaml ) ?;
0 commit comments