You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: exclude well-known global cache directories (#3)
* docs(readme): clarify that asimov only affects Time Machine, not Spotlight
Add a note explaining that asimov does not hide directories from
Spotlight indexing, with guidance on how to configure Spotlight privacy
settings separately.
Addresses stevegrunwell#90.
* feat(sentinels): add .NET project build directory exclusions
Exclude bin/ and obj/ directories when *.csproj (C#) or *.fsproj (F#)
project files are present, using glob sentinel patterns.
Inspired by stevegrunwell#87, props @guigomesa.
* feat: skip already-excluded directories for faster subsequent runs
Use Spotlight metadata (mdfind) to identify directories already excluded
from Time Machine and skip them during the find traversal. Also fixes a
comment typo and removes duplicate Gradle sentinel entries.
Inspired by stevegrunwell#97, props @VladRassokhin.
* feat: exclude well-known global cache directories
Add fixed directory exclusions for common tool caches (~/.cache,
~/.gradle/caches, ~/.m2/repository, ~/.npm/_cacache, ~/.nuget/packages,
~/.kube/cache) that are always safe to exclude without sentinel files.
Inspired by stevegrunwell#69, props @pkuczynski.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
10
10
11
11
* Support glob patterns in sentinel definitions, enabling wildcards like `*.xcodeproj` ([stevegrunwell/asimov#64], props @mdab121)
12
12
* Exclude Xcode DerivedData when `*.xcodeproj` is present ([stevegrunwell/asimov#64], props @mdab121)
13
+
* Exclude well-known global cache directories (`~/.cache`, `~/.gradle/caches`, `~/.m2/repository`, `~/.npm/_cacache`, `~/.nuget/packages`, `~/.kube/cache`, etc.) without requiring sentinel files (inspired by [stevegrunwell/asimov#69], props @pkuczynski)
13
14
* Exclude Next.js build cache (`.next`)
14
15
* Exclude Nuxt build cache (`.nuxt`)
15
16
* Exclude Angular CLI cache (`.angular`)
@@ -35,11 +36,17 @@ This project adheres to [Semantic Versioning](http://semver.org/).
35
36
36
37
### Changed
37
38
39
+
* Skip directories already excluded from Time Machine backups for faster subsequent runs (inspired by [stevegrunwell/asimov#97], props @VladRassokhin)
38
40
* Migrated test suite from PHP/PHPUnit to [Bats](https://github.com/bats-core/bats-core) (Bash Automated Testing System), removing the PHP dependency for contributors
39
41
* Replaced Travis CI pipeline with GitHub Actions (macOS 14 + 15 matrix)
40
42
* Replaced PHP `tmutil` mock with a pure bash implementation
41
43
* Moved install script to `scripts/install.sh` with shared variables, now copies binary instead of symlinking ([#35], props @sylver)
42
44
45
+
### Fixed
46
+
47
+
* Fixed duplicate Gradle sentinel entries in the sentinels list
48
+
* Fixed typo in comment ("decendents" → "descendants")
49
+
43
50
### Removed
44
51
45
52
* Removed PHP test infrastructure (`composer.json`, `phpunit.xml.dist`, and PHP test files)
Each directory is only excluded when its corresponding config file (the "sentinel") exists — so `node_modules` is only excluded if `package.json` is present, `vendor` only if `composer.json`, `go.mod`, or `Gemfile` exists, etc.
54
55
@@ -94,7 +95,9 @@ brew uninstall asimov
94
95
95
96
## How it works
96
97
97
-
Asimov is a thin wrapper around Apple's [`tmutil`](https://ss64.com/mac/tmutil.html). It builds a single `find` command from all known dependency patterns, walks your home directory (skipping `~/Library` and `~/.Trash`), and pipes matching paths through `tmutil addexclusion`. Directories already excluded are skipped automatically — safe to run as often as you like.
98
+
Asimov is a thin wrapper around Apple's [`tmutil`](https://ss64.com/mac/tmutil.html). It builds a single `find` command from all known dependency patterns, walks your home directory (skipping `~/Library` and `~/.Trash`), and pipes matching paths through `tmutil addexclusion`. It also unconditionally excludes well-known global tool caches (like `~/.cache`, `~/.gradle/caches`, and `~/.npm/_cacache`) that can always be safely restored. Directories already excluded are skipped automatically — safe to run as often as you like.
99
+
100
+
> **Note:** Asimov only excludes directories from Time Machine backups. It does not affect Spotlight indexing. To prevent Spotlight from indexing a directory, add it to the Privacy tab in System Settings > Spotlight (or Siri & Spotlight on newer macOS versions).
98
101
99
102
> **Note:** Asimov only excludes directories from Time Machine backups. It does not affect Spotlight indexing. To prevent Spotlight from indexing a directory, add it to the Privacy tab in System Settings > Spotlight (or Siri & Spotlight on newer macOS versions).
0 commit comments