Files
swaits fe6efb87a8 chore: repoint URLs at git.swaits.com and bump for release
Rewrites remaining github.com / git.sr.ht references to git.swaits.com,
translating GitHub URL shapes to Gitea's (/blob/<ref>/ -> /src/branch/<ref>/,
/tree/<tag> -> /src/tag/<tag>, /actions/workflows/X -> /actions?workflow=X,
/edit/ -> /_edit/).

Left pointing at GitHub on purpose: pull-request links (PRs were not migrated)
and GitHub-only surfaces Gitea lacks (security advisories, discussions).
2026-08-31 17:58:31 -06:00

29 lines
2.1 KiB
Markdown

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.1.0] - 2026-04-30
### Added
- Initial release.
- Cargo binary literally named `git` (via `[[bin]] name = "git"`) that shadows the real `git` on `PATH`.
- Default-safe passthrough: outside a jj worktree, or with no intercept marker, every invocation is forwarded to the real `git` via `exec()` — preserving signals, exit code, and TTY ownership.
- Intercept gate fires only when inside a `.jj` worktree (honoring `git -C <path>`) **and** either `FUCKGIT_INTERCEPT=1` or an AI-agent marker env (currently `CLAUDECODE`) is set.
- Redirect output: prints the matching `jj` subcommand plus live `jj help <sub>` output to stderr; exits with status `2`.
- Mapping table for 27 common git subcommands (`status`, `log`, `commit`, `add`, `checkout`, `switch`, `restore`, `branch`, `merge`, `rebase`, `pull`, `push`, `fetch`, `clone`, `init`, `diff`, `show`, `reset`, `revert`, `cherry-pick`, `stash`, `tag`, `blame`, `remote`, `bisect`, `config`, `reflog`).
- Plumbing allowlist (`rev-parse`, `symbolic-ref`, `for-each-ref`, `cat-file`, `update-ref`, `hash-object`, `ls-files`, `ls-tree`, `merge-base`, `show-ref`, `name-rev`, `var`, `credential`, `check-ref-format`, `version`) for transparent passthrough so tooling keeps working.
- Safety env passthroughs: `GIT_DIR`, `GIT_EXEC_PATH` (hook context); `CARGO` (cargo subprocess).
- Top-level argv pre-pass handles `-C <path>`, `-c <kv>`, `--git-dir[=<path>]`, `--work-tree[=<path>]`, `--namespace`, `--config-env`, `--exec-path`, `--paginate`/`--no-pager`, `--bare`, `--version`/`-v`, `--help`/`-h`.
- Escape hatches: `FUCKGIT_PASSTHROUGH=1` env var, `--fucking-git` flag (stripped before exec).
- Self-recursion guard via `FUCKGIT_DEPTH` env counter (aborts at depth ≥ 2).
- Linux and macOS support. Zero runtime dependencies.
[Unreleased]: https://git.swaits.com/swaits/fuckgit/compare/v0.1.0...main
[0.1.0]: https://git.swaits.com/swaits/fuckgit/releases/tag/v0.1.0