diff --git a/zed/src/worktree.rs b/zed/src/worktree.rs index 6dc5bcec023aef16701835577fcc0b3ce4addec5..196e62bb190aef5e8e52db787651c5f46e68be1b 100644 --- a/zed/src/worktree.rs +++ b/zed/src/worktree.rs @@ -1423,10 +1423,12 @@ mod tests { app.read(|ctx| tree.read(ctx).next_scan_complete()).await; app.read(|ctx| { let tree = tree.read(ctx); + let dot_git = tree.entry_for_path(".git").unwrap(); let tracked = tree.entry_for_path("tracked-dir/tracked-file2").unwrap(); let ignored = tree.entry_for_path("ignored-dir/ignored-file2").unwrap(); assert_eq!(tracked.is_ignored(), false); assert_eq!(ignored.is_ignored(), true); + assert_eq!(dot_git.is_ignored(), true); }); }); } diff --git a/zed/src/worktree/ignore.rs b/zed/src/worktree/ignore.rs index 0b2528b981f9548239e0868e82c84f905b08980c..9eb605eaf87b062d43b2de7b5027aba747bbc51b 100644 --- a/zed/src/worktree/ignore.rs +++ b/zed/src/worktree/ignore.rs @@ -1,6 +1,5 @@ -use std::{path::Path, sync::Arc}; - use ignore::gitignore::Gitignore; +use std::{ffi::OsStr, path::Path, sync::Arc}; pub enum IgnoreStack { None, @@ -37,6 +36,10 @@ impl IgnoreStack { } pub fn is_path_ignored(&self, path: &Path, is_dir: bool) -> bool { + if is_dir && path.file_name() == Some(OsStr::new(".git")) { + return true; + } + match self { Self::None => false, Self::All => true,