person.dev / repo-rip
A tiny CLI for retiring local Git repos.
repo-rip creates a lightweight Markdown grave marker
before you remove a local Git repo, so the working copy can go away
without disappearing from your local inventory.
The rip in repo-rip means R.I.P. Instead of
keeping every old repo cloned locally, you can write a small marker
file before removing the dormant working copy. The repo directory can
go away, while files like rip_my-project.md,
rip_old-prototype.md, or rip_chapel-ui.md
remain in its place.
Each marker records useful Git metadata: repo name, remote URL, branch, HEAD commit, clean or dirty status, recent commits, and a timestamp for the snapshot.
Marker filenames can stay lowercase, use an uppercase
RIP_ prefix, or include the current date:
rip_my-project.md, RIP_my-project.md, or
rip_my-project_2026-05-12.md.
Why
Local development folders tend to become graveyards. You hesitate to
delete old repos because the directories themselves act as an
inventory. But keeping every repo also means keeping
.git, dependencies, build artifacts, virtual
environments, node_modules, and other accumulated
weight.
repo-rip separates operational presence from memory: an
active repo remains a working directory, while a
rip_*.md file becomes the R.I.P. marker.
active repo directory = operational presence
rip_*.md file = R.I.P. grave marker
~/dev/my-project/
~/dev/rip_my-project.md
Usage
Clone the repo, put bin/repo-rip somewhere on your
PATH, and run repo-rip from anywhere
inside a Git repo.
By default, it writes or appends to
../rip_{repo-name}.md. Use -u for an
uppercase RIP_ prefix, -d to append the
current date, or -f to force a snapshot when safety
checks find issues.
chmod +x bin/repo-rip
mkdir -p ~/bin
cp bin/repo-rip ~/bin/repo-rip
repo-rip
repo-rip -u
repo-rip -d
repo-rip -ud
repo-rip -f
Safety checks
repo-rip is intentionally strict. It refuses to create a
snapshot if the working tree has uncommitted changes, the repo has
untracked files, the current branch has unpushed commits, the branch
has no upstream while the repo has an origin remote, the repo is in
detached HEAD state, or the repo has no commits.
If those warnings are acceptable, rerun with --force. The
marker still records the status output and the warnings present when
the snapshot was written.
Example marker
A marker is plain Markdown, so it can sit in a development folder and remain searchable with ordinary tools.
# my-project
Snapshot: 2026-05-11 14:32:10
## Repository
- Root: `/Users/me/dev/my-project`
- Remote: `git@github.com:me/my-project.git`
- Branch: `main`
- HEAD: `a1b2c3d`
## Status
```text
## main...origin/main
```
## Recent Commits
- `a1b2c3d` 2026-05-11 - Fix deploy script
- `d4e5f6a` 2026-05-10 - Add README
- `987abcd` 2026-05-09 - Initial commit
Philosophy
This is not a backup tool. It does not replace GitHub, Git remotes, Time Machine, or proper backups.
It is a small local R.I.P. marker tool for developers who want to keep their workspace clean without losing the visible inventory of what they have worked on.