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