A lightweight CLI tool that reports Git pull events to a GitPulse server.
Project description
🛰️ GitPulse CLI
Track every git pull across your repositories — automatically.
GitPulse is a lightweight Python CLI that silently tracks git pull events and reports them to a GitPulse dashboard (Laravel-based). It's designed for teams, freelancers, and open-source maintainers who want to know who pulled what, and when — without any friction.
🚀 Part 1: For Regular Users
If you just want to use GitPulse with the official dashboard (hosted by the GitPulse team), follow these simple steps 👇
🧩 Installation
Make sure you have Python 3.7+ installed, then run:
pip install gitpulse-cli
Once installed, confirm it works:
gitpulse --version
⚙️ Setup Inside a Git Project
Navigate into any of your Git repositories and run:
gitpulse setup
That's it ✅
This will automatically install a Git hook that runs after every git pull.
If you ever want to reinstall the hook cleanly:
gitpulse setup --force
📡 How It Works
Every time you or anyone in your team runs:
git pull
GitPulse automatically sends a lightweight event to the GitPulse API, containing:
- ✅ Repository name
- ✅ Current branch
- ✅ Git user email
- ✅ UTC timestamp
Your Laravel-powered dashboard will instantly update with who pulled the latest changes and when.
🖥️ View Pull Activity
Log into the GitPulse Dashboard:
You'll see your repositories, branches, and last pull timestamps beautifully displayed.
🧹 Uninstall
If you ever want to remove the GitPulse hook from a project:
rm .git/hooks/post-merge
🧠 Part 2: For Developers / Self-Hosting
If you're a developer who wants to run your own private GitPulse server (e.g., for enterprise or intranet use), you can easily clone and customize both components.
1️⃣ Clone the CLI
git clone https://github.com/yourusername/gitpulse-cli.git
cd gitpulse-cli
pip install -e .
This installs it locally in "editable" mode so you can modify the source.
2️⃣ Set Your Own API Endpoint
Edit gitpulse/main.py and update the API URL:
API_URL = "https://your-private-domain.com/api/report-pull"
Now your CLI will send pull events to your private backend instead of the public GitPulse server.
3️⃣ Deploy the Laravel Backend
You can either fork or deploy the official GitPulse backend (Laravel app).
Features include:
- REST API endpoint (
/api/report-pull) - Admin dashboard with real-time pull activity
- User authentication & access control
- Per-repo and per-user activity logs
Setup is as simple as:
git clone https://github.com/yourusername/gitpulse-laravel.git
composer install
php artisan migrate
php artisan serve
Then update your CLI's API_URL to point to this new backend.
4️⃣ Optional: Publish Your Forked CLI
You can publish your modified version to your private PyPI server:
python -m build
twine upload --repository-url https://your-pypi-server.com dist/*
🧩 Example Workflow
# 1. Developer clones a repo
git clone https://github.com/org/project.git
# 2. Installs GitPulse hook once
gitpulse setup
# 3. Pulls latest updates
git pull
# 4. Event automatically sent
✅ Git pull event reported successfully!
Dashboard updates automatically 🎉
🧰 Commands Reference
| Command | Description |
|---|---|
gitpulse setup |
Install GitPulse hook in current repo |
gitpulse setup --force |
Force reinstall the hook |
gitpulse run |
Manually send pull event (used internally by the hook) |
📄 License
MIT License © 2025 Tayo Adepetu
You're free to use, modify, and distribute GitPulse under the terms of the MIT license.
🌐 Links
- 🖥️ Official Dashboard → https://gitpulse.io
- 🐍 Python Package → https://pypi.org/project/gitpulse-cli
- 💬 Issues / Feedback → https://github.com/yourusername/gitpulse-cli/issues
🤝 Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Made with ❤️ by Tayo Adepetu
⭐ Star this repo if you find it helpful!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gitpulse_cli-0.1.0.tar.gz.
File metadata
- Download URL: gitpulse_cli-0.1.0.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f443d319597498b1e1bc94cb0465dbc2f2f9dc0c98f9d985e86b4b02a97ccc77
|
|
| MD5 |
c934005333611df62cd8f9a2500f2021
|
|
| BLAKE2b-256 |
354e9914bca4a06a862c123013895d9c7e22044feda65dfd4f316ec13b75f19e
|
File details
Details for the file gitpulse_cli-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gitpulse_cli-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aba3cd4b27d5c38dc7f684885d964b6c28518022143a8a0317063a4a0479ab35
|
|
| MD5 |
01d0e13b6e0abcfc05f9717d3ab48a24
|
|
| BLAKE2b-256 |
1ebc6bec314b9dab2c5c74e159f195f47fbcf3fc1f5ed057a3fb003e5fc44bca
|