Repo Time Machine
Watch any Git repository being built, commit by commit.
Ever wondered what a repository looked like five years ago?
Repo Time Machine turns Git history into an interactive timeline. Drag through time — or hit play — and watch files, contributors, languages, and project structure evolve.
What it does
Point it at any Git repository — local or public GitHub — and it generates a self-contained HTML file with:
- Interactive timeline slider
- Playback controls (0.5x to 5x speed)
- File tree at each point in history
- Language breakdown over time
- Repository growth chart
- Auto-detected milestones (first commit, tests, CI, Docker, etc.)
- Interesting statistics
No server needed. Just open the HTML file in a browser.
Installation
pip install repo-time-machine
Requires Python 3.10+ and Git.
Usage
Analyze a local repository
repo-time-machine .
repo-time-machine /path/to/repo
Analyze a public GitHub repository
repo-time-machine https://github.com/pallets/flask
Open in browser automatically
repo-time-machine https://github.com/user/repo --open
Options
repo-time-machine . --output timeline.html # Custom output file
repo-time-machine . --max-commits 500 # Limit commits analyzed
repo-time-machine . --sample 200 # Control snapshot count
repo-time-machine . --verbose # Show progress
repo-time-machine --version # Show version
Features
Interactive Timeline
Drag the slider to travel through the repository's history. The file tree, commit details, language breakdown, and statistics all update in real-time.
Playback Mode
Hit Play and watch the repository build itself. Control speed from 0.5x to 5x.
File Tree
See the complete directory structure at any point in time. Directories are collapsible.
Language Detection
Automatic language breakdown based on file extensions. Supports 40+ languages.
Growth Chart
SVG chart showing file count growth over the repository's lifetime.
Milestone Detection
Automatically identifies interesting moments:
- 🚀 First commit
- 👥 First outside contributor
- 🧪 Tests introduced
- ⚙️ CI introduced
- 🐳 Docker added
- 🔥 Biggest commit
- 🗑️ Biggest deletion
- 📦 Dependency file added
- 📦 Commit #100, #1000, etc.
Statistics
- Repository age
- Total commits and contributors
- Most active contributor
- Busiest day
- Most changed file
- Biggest commit and deletion
Performance
Repo Time Machine handles large repositories efficiently:
| Commits | Behavior |
|---|---|
| ≤ 1,000 | Analyze every commit |
| 1,001–10,000 | Sample ~1,000 commits |
| > 10,000 | Sample ~1,500 commits |
Milestone commits are always preserved regardless of sampling.
Example output:
Cloning repository...
Found 8,421 commits
Analyzing commit stats...
Detecting milestones...
Sampling 1,000 commits for visualization
Generating timeline...
Created repo-time-machine.html
Privacy & Security
- 100% local — no data leaves your machine
- No accounts — no authentication required
- No telemetry — no analytics or tracking
- Safe cloning — repository code is never executed
- Only Git metadata and file listings are inspected
Examples
# Analyze Flask
repo-time-machine https://github.com/pallets/flask --open
# Analyze React
repo-time-machine https://github.com/facebook/react --sample 500
# Analyze your own project
cd my-project
repo-time-machine . --open
Contributing
Contributions welcome!
git clone https://github.com/user/repo-time-machine.git
cd repo-time-machine
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
Run tests:
pytest
Roadmap
- Cumulative additions/deletions chart
- Contributor activity timeline
- File heatmap (most-changed files)
- Branch comparison
- Export to video/GIF
- Custom milestone patterns
License
MIT — see LICENSE. ""
Metadata
Release files for repo-time-machine 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| repo_time_machine-0.1.0.tar.gz | 23.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| repo_time_machine-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.5 kB
Release files / repo_time_machine-0.1.0.tar.gz
| Download URL | repo_time_machine-0.1.0.tar.gz |
|---|---|
| Size | 23.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b49fc587a7ee06c6c0705aeee8e5fc3ac158f765c9813427c03b516b68addd0c
|
|
BLAKE2b-256 checksum How to use checksums |
48c78367f37867dd7a722a2c449f27416d0b1172767a428ad956216261222ff5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.0
|
Release files / repo_time_machine-0.1.0-py3-none-any.whl
| Download URL | repo_time_machine-0.1.0-py3-none-any.whl |
|---|---|
| Size | 20.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a8aee13ebaae2a4e58990ab4100771c4f14b21686d41849cd7f693c935b93ba8
|
|
BLAKE2b-256 checksum How to use checksums |
e8b58beff40e5351da4361b2c82772cba5e8fbacdf4da543a162be4d3963984a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.0
|