Skip to main content

Visualize git history as per-machine tunnels in your terminal

Project description

git-tunnel

Visualize your git history as per-machine tunnels in the terminal.

If you work across multiple machines — a MacBook, a Workstation, a Server — git log treats them all the same. git-tunnel splits each machine into its own colored column so you can see at a glance where every commit was made.

────────────────────────────────────────────────────────────────────────────────
  TIME              │ pre git-tunnel                       │ MacBook                              │ Workstation                          │ HASH
────────────────────────────────────────────────────────────────────────────────
  2 hours ago       │ · · · · · · · · · · · · · ·          │ WIP: invoice route                   │ · · · · · · · · · · · · · ·          │ 2c4930f
  3 hours ago       │ · · · · · · · · · · · · · ·          │ · · · · · · · · · · · · · ·          │ finished validation                  │ 6f46c9f
  1 day ago         │ added model                          │ · · · · · · · · · · · · · ·          │ · · · · · · · · · · · · · ·          │ fd7bcad
  1 day ago         │ initial setup                        │ · · · · · · · · · · · · · ·          │ · · · · · · · · · · · · · ·          │ f3bc95b
────────────────────────────────────────────────────────────────────────────────

  ■ pre git-tunnel   ■ MacBook   ■ Workstation

Commits made before git-tunnel was installed appear in a plain white pre git-tunnel column — no history rewriting, no warnings.


Install

pip install git-tunnel

Or with uv:

uv tool install git-tunnel

Setup (once per machine)

Run the interactive setup:

git-tunnel install

This will:

  • Ask for a device name (e.g. MacBook, Workstation, Server)
  • Set git config --global user.device
  • Install the prepare-commit-msg hook globally
  • Point git config --global core.hooksPath at the hook

From this point on, every commit you make will automatically get a [device:YourDevice] tag appended to the message — silently, without you doing anything.


Usage

Inside any git repo:

git-tunnel

How it works

git-tunnel uses a global prepare-commit-msg hook that appends a [device:X] tag to every commit message, where X comes from git config --global user.device.

Your user.name is never touched — it stays clean for collaboration. The device tag lives in the commit message body and is stripped from the display in the tunnel view.


Multiple machines

Set a different device name on each machine:

# MacBook
git-tunnel install  # enter "MacBook" when prompted

# Workstation
git-tunnel install  # enter "Workstation" when prompted

# Server
git-tunnel install  # enter "Server" when prompted

Since the hook is global, it applies to every repo on that machine automatically.


Zero dependencies

git-tunnel uses only the Python standard library and git itself. No third-party packages required.


License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git_tunnel-0.1.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

git_tunnel-0.1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file git_tunnel-0.1.0.tar.gz.

File metadata

  • Download URL: git_tunnel-0.1.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for git_tunnel-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4ada13b84c4587d944b6af464d61187eaa10d5614190a82eff41a3807230aff7
MD5 807166cc925e7787dfa884f8cb2a2a91
BLAKE2b-256 f3fa75d60619508dd47b47c035f477f1de54308f76dd3c83c99691052573060c

See more details on using hashes here.

File details

Details for the file git_tunnel-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: git_tunnel-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for git_tunnel-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0e7e12924e672d4a15e6c4b727e2c85d3c939c3ff377c61850b724f885f4ee67
MD5 e516a4c62612fd0e2684efe1fb1b0616
BLAKE2b-256 7f26db5f31828ce21033d5b0ada9f826f87c2d3e944233078d9f02c55f185319

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page