diff --git a/cli/src/filterer/globset.rs b/cli/src/filterer/globset.rs index 0e19ebb..6373927 100644 --- a/cli/src/filterer/globset.rs +++ b/cli/src/filterer/globset.rs @@ -13,11 +13,13 @@ use watchexec::{ Event, Tag, }, filter::{globset::GlobsetFilterer, Filterer}, + project::ProjectType, }; pub async fn globset(args: &ArgMatches<'static>) -> Result> { let (project_origin, workdir) = super::common::dirs(args).await?; - let ignore_files = super::common::ignores(args, &project_origin).await?; + let vcs_types = super::common::vcs_types(&project_origin).await; + let ignore_files = super::common::ignores(args, &vcs_types, &project_origin).await?; let mut ignores = Vec::new(); @@ -30,10 +32,33 @@ pub async fn globset(args: &ArgMatches<'static>) -> Result) -> Result> { if !args.is_present("no-default-ignore") { filters.extend([ Filter::from_glob_ignore(None, ".DS_Store/"), - Filter::from_glob_ignore(None, ".git/"), - Filter::from_glob_ignore(None, ".hg/"), - Filter::from_glob_ignore(None, ".svn/"), - Filter::from_glob_ignore(None, "_darcs/"), - Filter::from_glob_ignore(None, ".fossil-settings/"), Filter::from_glob_ignore(None, "*.py[co]"), Filter::from_glob_ignore(None, "#*#"), Filter::from_glob_ignore(None, ".#*"), @@ -75,6 +70,31 @@ pub async fn tagged(args: &ArgMatches<'static>) -> Result> { Filter::from_glob_ignore(None, ".*.sw?"), Filter::from_glob_ignore(None, ".*.sw?x"), ]); + + if vcs_types.contains(&ProjectType::Git) { + filters.push(Filter::from_glob_ignore(None, "/.git")); + } + + if vcs_types.contains(&ProjectType::Mercurial) { + filters.push(Filter::from_glob_ignore(None, "/.hg")); + } + + + if vcs_types.contains(&ProjectType::Bazaar) { + filters.push(Filter::from_glob_ignore(None, "/.bzr")); + } + + if vcs_types.contains(&ProjectType::Darcs) { + filters.push(Filter::from_glob_ignore(None, "/_darcs")); + } + + if vcs_types.contains(&ProjectType::Fossil) { + filters.push(Filter::from_glob_ignore(None, "/.fossil-settings")); + } + + if vcs_types.contains(&ProjectType::Pijul) { + filters.push(Filter::from_glob_ignore(None, "/.pijul")); + } } if args.is_present("no-meta") {