Add uninstall documentation (GH #445)
- Create docs/UNINSTALLING.md with comprehensive uninstall steps - Add link to UNINSTALLING.md from INSTALLING.md - Cover: daemon, hooks, merge driver, .beads dir, worktree cleanup Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
190
docs/UNINSTALLING.md
Normal file
190
docs/UNINSTALLING.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# Uninstalling Beads
|
||||
|
||||
This guide explains how to completely remove Beads from a repository.
|
||||
|
||||
## Quick Uninstall
|
||||
|
||||
Run these commands from your repository root:
|
||||
|
||||
```bash
|
||||
# 1. Stop any running daemon
|
||||
bd daemons killall
|
||||
|
||||
# 2. Remove git hooks installed by Beads
|
||||
rm -f .git/hooks/pre-commit .git/hooks/post-merge .git/hooks/pre-push .git/hooks/post-checkout
|
||||
|
||||
# 3. Remove merge driver config
|
||||
git config --unset merge.beads.driver
|
||||
git config --unset merge.beads.name
|
||||
|
||||
# 4. Remove .gitattributes entry (if only contains beads config)
|
||||
# Or manually edit to remove the beads line
|
||||
rm -f .gitattributes
|
||||
|
||||
# 5. Remove .beads directory
|
||||
rm -rf .beads
|
||||
|
||||
# 6. Remove sync worktree (if exists)
|
||||
rm -rf .git/beads-worktrees
|
||||
```
|
||||
|
||||
## Detailed Steps
|
||||
|
||||
### 1. Stop the Daemon
|
||||
|
||||
If a Beads daemon is running for this repository, stop it first:
|
||||
|
||||
```bash
|
||||
bd daemons list # Check if daemon is running
|
||||
bd daemons killall # Stop all daemons
|
||||
```
|
||||
|
||||
### 2. Remove Git Hooks
|
||||
|
||||
Beads installs these hooks in `.git/hooks/`:
|
||||
|
||||
| Hook | Purpose |
|
||||
|------|---------|
|
||||
| `pre-commit` | Syncs JSONL before commits |
|
||||
| `post-merge` | Imports changes after merges |
|
||||
| `pre-push` | Syncs before pushing |
|
||||
| `post-checkout` | Imports after branch switches |
|
||||
|
||||
To remove them:
|
||||
|
||||
```bash
|
||||
rm -f .git/hooks/pre-commit
|
||||
rm -f .git/hooks/post-merge
|
||||
rm -f .git/hooks/pre-push
|
||||
rm -f .git/hooks/post-checkout
|
||||
```
|
||||
|
||||
**Note:** If you had custom hooks before installing Beads, check for `.backup` files:
|
||||
```bash
|
||||
ls .git/hooks/*.backup
|
||||
```
|
||||
|
||||
Restore any backups if needed:
|
||||
```bash
|
||||
mv .git/hooks/pre-commit.backup .git/hooks/pre-commit
|
||||
```
|
||||
|
||||
### 3. Remove Merge Driver Configuration
|
||||
|
||||
Beads configures a custom merge driver in your git config:
|
||||
|
||||
```bash
|
||||
git config --unset merge.beads.driver
|
||||
git config --unset merge.beads.name
|
||||
```
|
||||
|
||||
### 4. Remove .gitattributes Entry
|
||||
|
||||
Beads adds a line to `.gitattributes` for JSONL merge handling:
|
||||
|
||||
```
|
||||
.beads/issues.jsonl merge=beads
|
||||
```
|
||||
|
||||
Either remove the entire file (if it only contains this line):
|
||||
```bash
|
||||
rm -f .gitattributes
|
||||
```
|
||||
|
||||
Or edit it to remove just the beads line:
|
||||
```bash
|
||||
# Edit .gitattributes and remove the line containing "merge=beads"
|
||||
```
|
||||
|
||||
### 5. Remove .beads Directory
|
||||
|
||||
The `.beads/` directory contains:
|
||||
|
||||
| File/Dir | Description |
|
||||
|----------|-------------|
|
||||
| `beads.db` | SQLite database with issues |
|
||||
| `issues.jsonl` | Git-tracked issue data |
|
||||
| `daemon.pid` | Running daemon PID |
|
||||
| `daemon.log` | Daemon logs |
|
||||
| `daemon.lock` | Lock file for daemon |
|
||||
| `bd.sock` | Unix socket for daemon IPC |
|
||||
| `config.yaml` | Project configuration |
|
||||
| `metadata.json` | Version tracking |
|
||||
| `deletions.jsonl` | Soft-deleted issues |
|
||||
| `BD_GUIDE.md` | AI agent instructions |
|
||||
| `README.md` | Human-readable overview |
|
||||
|
||||
Remove everything:
|
||||
```bash
|
||||
rm -rf .beads
|
||||
```
|
||||
|
||||
**Warning:** This permanently deletes all issue data. Consider backing up first:
|
||||
```bash
|
||||
cp .beads/issues.jsonl ~/beads-backup-$(date +%Y%m%d).jsonl
|
||||
```
|
||||
|
||||
### 6. Remove Sync Worktree
|
||||
|
||||
If you used branch sync features, clean up the worktree:
|
||||
|
||||
```bash
|
||||
rm -rf .git/beads-worktrees
|
||||
```
|
||||
|
||||
### 7. Commit the Removal (Optional)
|
||||
|
||||
If `.beads/` was tracked in git, commit its removal:
|
||||
|
||||
```bash
|
||||
git add -A
|
||||
git commit -m "Remove beads issue tracking"
|
||||
git push
|
||||
```
|
||||
|
||||
## Uninstalling the `bd` Binary
|
||||
|
||||
The `bd` command itself is a standalone binary. Remove it based on how you installed:
|
||||
|
||||
**If installed via go install:**
|
||||
```bash
|
||||
rm $(which bd)
|
||||
# Or: rm ~/go/bin/bd
|
||||
```
|
||||
|
||||
**If installed manually:**
|
||||
```bash
|
||||
# Remove from wherever you placed it
|
||||
rm /usr/local/bin/bd
|
||||
```
|
||||
|
||||
## Verify Complete Removal
|
||||
|
||||
Run these checks to confirm Beads is fully removed:
|
||||
|
||||
```bash
|
||||
# Should show "command not found" or be a different bd
|
||||
which bd
|
||||
|
||||
# Should not exist
|
||||
ls .beads/
|
||||
|
||||
# Should not contain beads hooks
|
||||
ls .git/hooks/
|
||||
|
||||
# Should not have merge driver
|
||||
git config --get merge.beads.driver
|
||||
|
||||
# No .gitattributes or no beads line
|
||||
cat .gitattributes
|
||||
```
|
||||
|
||||
## Re-installing Later
|
||||
|
||||
To set up Beads again in the future:
|
||||
|
||||
```bash
|
||||
bd init
|
||||
```
|
||||
|
||||
This will recreate the `.beads/` directory, install hooks, and configure the merge driver.
|
||||
Reference in New Issue
Block a user