Skip to content

jgavris/rs-git-fsmonitor

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

rs-git-fsmonitor

A git fsmonitor hook written in Rust.

Installation

The heavy lifting of this tool is handled by Facebook's watchman utilty, so you will need watchman installed. The Homebrew and Habitat installers will handle installing this depencency for you, so you will only need to do this if you are building from source.

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 --binlink jgavris/rs-git-fsmonitor

# Configure git repository to use the tool (run in desired large git repository):
git config 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

Uninstallation

git config --unset core.fsmonitor

And then you can remove it from the package manager you used to install it.

License

MIT