/rs-git-fsmonitor

A fast git core.fsmonitor hook written in Rust

Primary LanguageRustMIT LicenseMIT

rs-git-fsmonitor

A git fsmonitor hook written in Rust.

Installation

Via Homebrew

Homebrew is the recommended way to install in Mac environments:

brew tap jgavris/rs-git-fsmonitor https://github.com/jgavris/rs-git-fsmonitor.git && brew install rs-git-fsmonitor

# Configure git repository to use the tool (run in desired large git repository):
git config core.fsmonitor rs-git-fsmonitor

Via Habitat

Habitat is the recommended way to install in Linux environments:

# Install and link packages
sudo hab pkg install jgavris/rs-git-fsmonitor
sudo hab pkg binlink jgavris/rs-git-fsmonitor
sudo hab pkg binlink jarvus/watchman

# Ensure service directory exists and is writable
sudo mkdir -p /hab/svc/watchman/var
sudo chmod o+rwx /hab/svc/watchman/var

# Configure git repository to use the tool (run in desired large git repository):
git config --global core.fsmonitor rs-git-fsmonitor

Purpose

Git 2.16 added support for a core.fsmonitor hook to allow an external tool to inform it which files have changed.

https://blog.github.com/2018-04-05-git-217-released/#speeding-up-status-with-watchman

On repositories with many files, this can be a dramatic speedup.

λ find . -type f | wc -l
   30737

Before:

λ time git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit (use -u to show untracked files)

real	0m0.129s
user	0m0.062s
sys	0m0.268s

After:

λ time git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit (use -u to show untracked files)

real	0m0.067s
user	0m0.030s
sys	0m0.026s

License

MIT