Excluding files
Blamely skips files that match patterns in ~/.blamely/exclude. A matched file is completely invisible to attribution — it never appears in blamely report, blamely stats, or the editor plugin.
The exclude file
~/.blamely/excludeCreated automatically on first install with sensible defaults. Edit it freely — Blamely reads it on every commit and never overwrites it once it exists. Changes take effect immediately (no daemon restart needed).
Pattern syntax
The file uses a subset of .gitignore syntax.
| Pattern form | Matches |
|---|---|
name | Any path component equal to name. node_modules matches app/node_modules/foo.js. |
name/ | Same as name — trailing slash is cosmetic. |
*.ext | Basename glob via filepath.Match. *.class matches pkg/Foo.class. |
/name | Anchored at repo root. /dist matches dist/ but not app/dist/. |
/name/ | Same as /name (anchored directory). |
foo/bar | Non-anchored slash path. Matches foo/bar anywhere in the path. |
# comment | Ignored. |
| (blank line) | Ignored. |
Negation is not supported
There is no !pattern: lines starting with ! are silently dropped.
Default exclusions
The file Blamely writes on first install excludes the most common build outputs, dependency trees, caches, and binary files. A few examples:
# Build outputs
target/
build/
dist/
.next/
# Dependencies
node_modules/
vendor/
.venv/
# Lockfiles (generated, not hand-written)
package-lock.json
yarn.lock
go.sum
Cargo.lock
# Compiled artifacts
*.class
*.pyc
*.o
# Minified assets
*.min.js
*.min.css
*.mapThe full default list covers Java, Python, Go, Rust, Ruby, PHP, Node.js, Swift, and C/C++ projects out of the box. Inspect the current file:
cat ~/.blamely/excludegitignore integration
Blamely automatically merges the global exclude file with:
- The repo’s
.gitignore(top-level only — sub-directory.gitignorefiles are not walked). .git/info/exclude(per-repo local exclusions).
Anything your repo’s .gitignore would hide from a fresh clone is also hidden from Blamely’s attribution. You don’t need to duplicate those patterns.
Per-repo opt-out
To stop attributing a single repo entirely, set its local core.hooksPath to empty:
git config core.hooksPath ""The global hook is bypassed for that repo. Undo it:
git config --unset core.hooksPathAdding project-specific patterns
Append patterns directly to ~/.blamely/exclude:
echo "generated/" >> ~/.blamely/exclude
echo "*.pb.go" >> ~/.blamely/exclude
echo "/migrations" >> ~/.blamely/excludeThe next commit picks them up automatically.
Next
- Configuration & paths — where Blamely stores state.
- Privacy & data — what information is recorded.
- Troubleshooting — common attribution issues.
Something unclear or wrong? Tell us.