Files
beads/website/docs/reference/git-integration.md
Steve Yegge 584608a14e feat: add llms.txt standard support for AI agent discoverability (#784)
Cherry-picked website/, scripts/generate-llms-full.sh, and deploy-docs.yml
from joyshmitz's PR. Fixed workflow to trigger on main branch instead of
docs/docusaurus-site.

Features:
- Docusaurus documentation site with llms.txt support
- Environment-variable driven config (defaults to steveyegge org)
- Automated llms-full.txt generation from docs
- GitHub Pages deployment workflow

Co-authored-by: joyshmitz <joyshmitz@users.noreply.github.com>

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2025-12-30 18:27:50 -08:00

171 lines
2.8 KiB
Markdown

---
id: git-integration
title: Git Integration
sidebar_position: 2
---
# Git Integration
How beads integrates with git.
## Overview
Beads uses git for:
- **JSONL sync** - Issues stored in `.beads/issues.jsonl`
- **Deletion tracking** - `.beads/deletions.jsonl`
- **Conflict resolution** - Custom merge driver
- **Hooks** - Auto-sync on git operations
## File Structure
```
.beads/
├── beads.db # SQLite database (gitignored)
├── issues.jsonl # Issue data (git-tracked)
├── deletions.jsonl # Deletion manifest (git-tracked)
├── config.toml # Project config (git-tracked)
└── bd.sock # Daemon socket (gitignored)
```
## Git Hooks
### Installation
```bash
bd hooks install
```
Installs:
- **pre-commit** - Exports database to JSONL
- **post-merge** - Imports from JSONL after pull
- **pre-push** - Ensures sync before push
### Status
```bash
bd hooks status
```
### Uninstall
```bash
bd hooks uninstall
```
## Merge Driver
### Purpose
The beads merge driver handles JSONL conflicts automatically:
- Merges non-conflicting changes
- Uses latest timestamp for same-issue edits
- Preserves both sides for real conflicts
### Installation
```bash
bd init # Prompts for merge driver setup
```
Or manually add to `.gitattributes`:
```gitattributes
.beads/issues.jsonl merge=beads
.beads/deletions.jsonl merge=beads
```
And `.git/config`:
```ini
[merge "beads"]
name = Beads JSONL merge driver
driver = bd merge-driver %O %A %B
```
## Protected Branches
For protected main branches:
```bash
bd init --branch beads-sync
```
This:
- Creates a separate `beads-sync` branch
- Syncs issues to that branch
- Avoids direct commits to main
## Git Worktrees
Beads requires `--no-daemon` in git worktrees:
```bash
# In worktree
bd --no-daemon create "Task"
bd --no-daemon list
```
Why: Daemon uses `.beads/bd.sock` which conflicts across worktrees.
## Branch Workflows
### Feature Branch
```bash
git checkout -b feature-x
bd create "Feature X" -t feature
# Work...
bd sync
git push
```
### Fork Workflow
```bash
# In fork
bd init --contributor
# Work in separate planning repo...
bd sync
```
### Team Workflow
```bash
bd init --team
# All team members share issues.jsonl
git pull # Auto-imports via hook
```
## Conflict Resolution
### With Merge Driver
Automatic - driver handles most conflicts.
### Manual Resolution
```bash
# After conflict
git checkout --ours .beads/issues.jsonl
bd import -i .beads/issues.jsonl
bd sync
git add .beads/
git commit
```
### Duplicate Detection
After merge:
```bash
bd duplicates --auto-merge
```
## Best Practices
1. **Install hooks** - `bd hooks install`
2. **Use merge driver** - Avoid manual conflict resolution
3. **Sync regularly** - `bd sync` at session end
4. **Pull before work** - Get latest issues
5. **Use `--no-daemon` in worktrees**