Skip to content

Commit 6d74502

Browse files
jdeveraclaude
andcommitted
feat(gh-wtfork): categorize forks, link PRs, add temporal context
- Categorize forks: maintained (ahead), contribution (has PRs), untouched - Parallel analysis with 5 workers for ~5x speedup - Link branches to their PRs (open/merged/closed) via search API - Show temporal context: "12 ahead (3mo ago), 45 behind (upstream: 2d ago)" - Human-readable relative dates for branches - Styled output with lipgloss, grouped by category - Granular progress updates during analysis - Update README with compelling narrative and new output examples Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 02de5b5 commit 6d74502

2 files changed

Lines changed: 528 additions & 103 deletions

File tree

README.md

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ A collection of git utilities, freshly baked in Go. Vibe-coded.
1414
|---------|-------|-------------|
1515
| **git-explain** | [git-explain](#-git-explain) | See contribution status across repositories |
1616
| **git-as** | [git-id](#-git-id), [git-as](#-git-as), [gh-as](#-gh-as) | Identity switching for git and GitHub CLI |
17-
| **gh-wtfork** | [gh-wtfork](#-gh-wtfork) | Analyze your GitHub forks |
17+
| **gh-wtfork** | [gh-wtfork](#-gh-wtfork) | What the fork? Triage years of GitHub forks |
1818

1919
---
2020

@@ -266,7 +266,20 @@ gh-as personal repo clone owner/repo
266266

267267
**What the fork? Analyze your GitHub forks.**
268268

269-
See which forks have drifted from upstream, have unpushed branches, or can be safely deleted.
269+
You've accumulated mass amounts of repositories after years of compulsive open source contribution. You no longer know what's yours and what's not. Tell apart the projects you're actively maintaining from that fork you made in 2010 to correct a typo.
270+
271+
### What it shows
272+
273+
`gh-wtfork` categorizes your forks into three groups:
274+
275+
- **Maintained** — you're ahead on the default branch (keeping your own version)
276+
- **Contributions** — not ahead, but has branches or PRs (contributing back upstream)
277+
- **Untouched** — no changes at all (can probably delete)
278+
279+
For each fork, you'll see:
280+
- How far ahead/behind upstream, and *when* (is upstream dead? is your fork stale?)
281+
- Your branches with age and associated PR status (open, merged, or closed)
282+
- Whether that old branch is finished business or still pending
270283

271284
### Installation
272285

@@ -293,29 +306,23 @@ gh-wtfork --json
293306
### Example output
294307

295308
```
296-
jdevera/acme.sh
297-
upstream: acmesh-official/acme.sh
298-
deviation: 441 behind
299-
branches: 4 non-default
300-
- multideploy-yaml (pushed 2025-08-31)
301-
- patch-1 (pushed 2025-09-01)
302-
- posix_globs_for_list (pushed 2026-01-02)
303-
304-
jdevera/command-launcher
305-
upstream: criteo/command-launcher
306-
deviation: 12 ahead, 45 behind
307-
branches: 3 non-default
308-
- feature-branch (pushed 2025-10-20)
309-
open PRs: 1
309+
● Maintained
310+
🍴 jdevera/command-launcher
311+
↑ criteo/command-launcher
312+
↑ 12 ahead (3mo ago) ↓ 45 behind (upstream: 2d ago)
313+
⎇ feature-branch 2025-10-20 · 4mo ago
314+
🔀 merged #89 Add self-update version comparison
315+
316+
○ Contributions
317+
🍴 jdevera/acme.sh
318+
↑ acmesh-official/acme.sh
319+
↓ 441 behind (upstream: 2d ago)
320+
⎇ multideploy-yaml 2025-08-31 · 6mo ago
321+
🔀 merged #4521 Add multi-deploy YAML support
322+
⎇ patch-1 2025-09-01 · 6mo ago
323+
✖ closed #4530 Fix typo in README
310324
```
311325

312-
### What it shows
313-
314-
- **deviation**: commits ahead/behind upstream's default branch
315-
- **branches**: non-default branches with last push date
316-
- **open PRs**: pull requests in your fork
317-
- **untouched**: forks with no changes (hidden by default)
318-
319326
---
320327

321328
## License

0 commit comments

Comments
 (0)