_ _ _ _
| | | | | | |
_ __ _ _| | |________ ____ _| |_ ___| |__
| '_ \| | | | | |______\ \ /\ / / _` | __/ __| '_ \
| |_) | |_| | | | \ V V / (_| | || (__| | | |
| .__/ \__,_|_|_| \_/\_/ \__,_|\__\___|_| |_|
| |
|_|
pull-watch -- ./do_something_when_your_git_repo_changes.sh
A hobbyist-grade tool that watches a git repository for changes and runs a specified command when changes are detected.
Your friendly neighborhood Git repository watchdog! ๐
Guards your watch, your time, avoids wasting it, get it? No? Never mind. I am just a dad. It's muscle memory at this point!

How it started: ๐ git pull
&& ./run.sh
&& CTRL/CMD+C && git pull
&& ./run.sh
&& CTRL/CMD+C && โพ๏ธ... ๐ต
How it's going: pull-watch -- ./run.sh
โจ Features
- ๐ Configurable poll interval (because sometimes you need a coffee break)
- ๐ฏ Graceful process management (no rough handling here!)
- ๐ Support for different git directories (home is where your .git is)
- ๐ข Smart logging levels (quiet, normal, and verbose - you choose how chatty it gets!)
- ๐ก๏ธ Proper signal handling (catches signals like a pro)
- โฑ๏ธ Context-aware git operations with timeouts (patience is a virtue, but timeouts are better)
- ๐ Run on start option (for the eager beavers)
- โ Optional timestamps in logs (when you need to know when things happened)
๐ Installation
Quick and easy - just like ordering pizza!
Go Install
go install github.com/ship-digital/pull-watch@latest
Homebrew
brew tap ship-digital/tap
brew install pull-watch
Chocolatey (Windows)
choco install pull-watch
๐ฎ Usage
Usage: pull-watch [options] -- <command>
Watch git repository for remote changes and run commands.
It's like: 'git pull && <command>' but with polling and automatic process management.
Options:
-git-dir string
Git repository directory (default ".")
-graceful
Try graceful stop before force kill
-interval duration
Poll interval (e.g. 15s, 1m) (default 15s)
-quiet
Show only errors and warnings
-run-on-start
Run command on startup regardless of git state
-stop-timeout duration
Timeout for graceful stop before force kill (default 5s)
-timestamp
Show timestamps in logs
-verbose
Enable verbose logging
-version
Show version information
๐ Examples
Watch current directory and restart a server when changes are detected:
Keep your server fresh and up-to-date!
pull-watch -- go run main.go
Watch specific directory with custom interval:
For when you want to keep an eye on things from a distance...
pull-watch -git-dir /path/to/repo -interval 1m -- npm start
Force kill processes (default):
The "no time for chitchat" approach
pull-watch -- node server.js
Graceful stop before force kill:
For the gentler souls among us
pull-watch -graceful -stop-timeout 10s -- ./my-server
Watch with different logging levels:
# Default mode - shows important info
pull-watch -- npm start
# Quiet mode - shows only errors and warnings
pull-watch -quiet -- npm start
# Verbose mode - shows all the details
pull-watch -verbose -- npm start
Made with โค๏ธ by @deblasis for developers who appreciate a touch of automation in their lives.