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.