Only ignore .git if we're in a git project, and so on

This commit is contained in:
Félix Saparelli 2022-01-16 16:12:50 +13:00
parent 2682dde41d
commit 9327f8c293
No known key found for this signature in database
GPG Key ID: B948C4BAE44FC474
2 changed files with 54 additions and 9 deletions

View File

@ -13,11 +13,13 @@ use watchexec::{
Event, Tag,
},
filter::{globset::GlobsetFilterer, Filterer},
project::ProjectType,
};
pub async fn globset(args: &ArgMatches<'static>) -> Result<Arc<WatchexecFilterer>> {
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<Arc<WatchexecFilterer
(String::from(".*.kate-swp"), None),
(String::from(".*.sw?"), None),
(String::from(".*.sw?x"), None),
(format!("**{s}.git{s}**", s = MAIN_SEPARATOR), None),
(format!("**{s}.hg{s}**", s = MAIN_SEPARATOR), None),
(format!("**{s}.svn{s}**", s = MAIN_SEPARATOR), None),
]);
if vcs_types.contains(&ProjectType::Git) {
ignores.push((format!("**{s}.git{s}**", s = MAIN_SEPARATOR), None));
}
if vcs_types.contains(&ProjectType::Mercurial) {
ignores.push((format!("**{s}.hg{s}**", s = MAIN_SEPARATOR), None));
}
if vcs_types.contains(&ProjectType::Bazaar) {
ignores.push((format!("**{s}.bzr{s}**", s = MAIN_SEPARATOR), None));
}
if vcs_types.contains(&ProjectType::Darcs) {
ignores.push((format!("**{s}_darcs{s}**", s = MAIN_SEPARATOR), None));
}
if vcs_types.contains(&ProjectType::Fossil) {
ignores.push((
format!("**{s}.fossil-settings{s}**", s = MAIN_SEPARATOR),
None,
));
}
if vcs_types.contains(&ProjectType::Pijul) {
ignores.push((format!("**{s}.pijul{s}**", s = MAIN_SEPARATOR), None));
}
}
let filters = args

View File

@ -63,11 +63,6 @@ pub async fn tagged(args: &ArgMatches<'static>) -> Result<Arc<TaggedFilterer>> {
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<Arc<TaggedFilterer>> {
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") {