Metadata-Version: 2.5
Name: gitreveal
Version: 0.1.0
Summary: See what your own git history gives away: emails, employer, time zone, trips, working hours, laptop name.
Project-URL: Homepage, https://github.com/ArkaKhorchidian/gitreveal
Project-URL: Issues, https://github.com/ArkaKhorchidian/gitreveal/issues
Author: Arka Khorchidian
License-Expression: MIT
License-File: LICENSE
Keywords: cli,commits,developer-tools,email,git,github,osint,privacy,security,timezone
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Version Control :: Git
Classifier: Topic :: Utilities
Requires-Python: >=3.9
Requires-Dist: rich>=13
Provides-Extra: test
Requires-Dist: pytest>=7; extra == 'test'
Description-Content-Type: text/markdown

# gitreveal

**Every commit you push carries your email, your time zone and the exact minute you wrote it.** Put a few hundred together and anyone can read where you live, where you work, when you sleep and when you went on vacation. gitreveal shows you what your own history gives away, and how to stop it.

```bash
uvx gitreveal
```

<p align="center"><img src="https://raw.githubusercontent.com/ArkaKhorchidian/gitreveal/main/docs/demo.gif" alt="gitreveal demo" width="760"></p>

<sub>Demo on made-up repos for a made-up person, generated by <a href="docs/demo.py">docs/demo.py</a>.</sub>

## What it finds

| | How |
|---|---|
| **Your work email** | an address at a company domain names your employer |
| **Your personal email** | Gmail, iCloud, Outlook… addresses that spammers scrape from GitHub |
| **Your school** | `.edu` and `.ac.xx` addresses |
| **Your laptop's name** | `you@Your-MacBook-Pro.local`: the address git makes up when `user.email` was never set |
| **Where you live** | the UTC offset stored in every commit, including whether it shifts for summer time |
| **Your trips** | runs of commits made from another time zone, with dates |
| **Your schedule** | peak hour, late nights, weekends, how much you commit during office hours |
| **Old names** | every name you've committed under |
| **Unsigned commits** | anyone can push a commit that says it's from you |

## It only looks at you

gitreveal finds the git repos in your home folder (or the folders you name) and reads **only the commits whose name or email matches your own git config**. There is no option to look up anyone else, and it never downloads anything: it reads repos that are already on your machine. Other people's commits in the same repos are skipped.

Repos with a GitHub, GitLab, Bitbucket or Codeberg remote are counted as public, since that's where this history is readable by anyone who clones them.

## Fixing it

For new commits:

```bash
git config --global user.email 12345+you@users.noreply.github.com   # GitHub → Settings → Emails
export TZ=UTC                                                       # in your shell profile, so commits say UTC
git config --global commit.gpgsign true                             # SSH keys work too: gpg.format ssh
```

On GitHub, also turn on **Block command line pushes that expose my email**.

History you've already pushed keeps the old details. Rewriting it takes [git filter-repo](https://github.com/newren/git-filter-repo) with a mailmap and a force push, which changes every commit hash, so only do it on repos where that's fine.

## Options

```
gitreveal                 # repos anywhere under your home folder
gitreveal ~/code ~/work   # just these folders
gitreveal --depth 3       # how deep to look for repos (default 5)
gitreveal --json          # for scripts
```

## Install

```bash
uvx gitreveal           # run without installing
pipx install gitreveal  # or install it
```

Requires Python 3.9+ and git. The only dependency is `rich`. macOS, Linux and Windows.

## License

MIT
