fix gitignore performance issues

This commit is contained in:
Evan Almloff committed 2023-01-13 17:31:55 -06:00
1 parent 31e21aaa79
commit 34c8ad8849
2 files changed
+11 -10

No files matched your search

+1 -1
View File
@@ -23,4 +23,4 @@ serde_json = "1.0.91"
serde = { version = "1", features = ["derive"] }
execute = "0.2.11"
once_cell = "1.17.0"
gitignore = "1.0.7"
ignore = "0.4.19"
+10 -9
View File
@@ -166,7 +166,7 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
std::thread::spawn(move || {
// try to find the gitingore file
let gitignore_file_path = crate_dir.join(".gitignore");
let gitignore_file = gitignore::File::new(&gitignore_file_path.as_path());
let (gitignore, _) = ignore::gitignore::Gitignore::new(gitignore_file_path);
let mut last_update_time = chrono::Local::now().timestamp();
@@ -220,15 +220,16 @@ pub fn init<Ctx: HotReloadingContext + Send + 'static>(cfg: Config<Ctx>) {
.iter()
.filter(|path| {
// skip non rust files
matches!(path.extension().and_then(|p| p.to_str()), Some("rs" | "toml" | "css" | "html" | "js")) &&
matches!(
path.extension().and_then(|p| p.to_str()),
Some("rs" | "toml" | "css" | "html" | "js")
)&&
// skip excluded paths
!excluded_paths.iter().any(|p| path.starts_with(p)) && match &gitignore_file{
Ok(file) => match file.is_excluded(path){
Ok(excluded) => !excluded,
Err(_) => true,
},
Err(_) => true,
}
!excluded_paths.iter().any(|p| path.starts_with(p)) &&
// respect .gitignore
!gitignore
.matched_path_or_any_parents(path, false)
.is_ignore()
})
.collect::<Vec<_>>();