Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

changed

Live read-only TUI showing what changed in your git worktree

License Rust Edition crates.io

Install  ·  Quickstart  ·  Development


Install

Requires Rust 1.85+ and ~/.cargo/bin on your PATH.

cargo install changed-cli

Verify:

changed --help
Build from source — for development or unreleased changes
git clone https://github.com/cesarferreira/changed.git
cd changed
cargo install --path . --locked
# or
make install-release

Debug install (faster compile, larger binary):

make install

Run without installing:

make build-release
./target/release/changed

Quickstart

changed --help

Performance on large repos

changed watches the whole worktree, but only re-queries git when an event can actually change git status output:

  • Events under git-ignored paths (build output, node_modules, …) are filtered out, using the repo's .gitignore files and .git/info/exclude.
  • Git-internal churn is limited to HEAD, index, packed-refs, refs/** and *_HEAD — object store and gc activity never triggers a refresh.
  • Refreshes are debounced (120 ms) and rate-limited (750 ms) during sustained bursts.

For very large repos and monorepos, git-side caches make each refresh dramatically cheaper:

git config core.untrackedCache true
git config core.fsmonitor true

Development

Common tasks via the Makefile:

make              # check + build + test
make build        # debug build
make build-release
make install      # install debug binary
make install-release
make run ARGS="--hello"
make check        # cargo check + clippy
make fmt          # format
make lint         # fmt check + clippy
make test
make clean
make demo         # install + show --help

Releasing (requires cargo-release):

make release                  # default minor bump
make release LEVEL=patch      # patch bump
make release LEVEL=major      # major bump

The pre-release hook finalizes CHANGELOG.md from commits since the latest v* tag, refreshes compare links, and leaves a fresh Unreleased header. If there are no commits since the last tag, the release stops before publishing.

License

MIT

About

Live read-only TUI showing what changed in your git worktree

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages