diff --git a/.gitignore b/.gitignore index 70e85d1e..e00cd7bc 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,9 @@ go.work *.swo *~ +# Claude Code +.claude/settings.local.json + # OS .DS_Store Thumbs.db diff --git a/README.md b/README.md index 2ee6b034..c59398bc 100644 --- a/README.md +++ b/README.md @@ -774,16 +774,9 @@ Each line is a complete JSON issue object: ### Setup -Add to `.gitignore`: -``` -.beads/*.db -.beads/*.db-* -``` - -Add to git: -``` -.beads/issues.jsonl -``` +The `.beads/` directory is automatically configured during `bd init`: +- Database files (`.beads/*.db`, `.beads/*.db-*`) are gitignored automatically +- JSONL file (`.beads/issues.jsonl`) is tracked in git ### Workflow diff --git a/cmd/bd/init.go b/cmd/bd/init.go index da65b4b3..6b39ae9a 100644 --- a/cmd/bd/init.go +++ b/cmd/bd/init.go @@ -42,6 +42,14 @@ and database file. Optionally specify a custom issue prefix.`, os.Exit(1) } + // Create .gitignore in .beads directory + gitignorePath := filepath.Join(beadsDir, ".gitignore") + gitignoreContent := "*.db\n*.db-*\n" + if err := os.WriteFile(gitignorePath, []byte(gitignoreContent), 0644); err != nil { + fmt.Fprintf(os.Stderr, "Warning: failed to create .gitignore: %v\n", err) + // Non-fatal - continue anyway + } + // Create database dbPath := filepath.Join(beadsDir, prefix+".db") store, err := sqlite.New(dbPath) diff --git a/cmd/bd/testdata/init.txt b/cmd/bd/testdata/init.txt index 8062605c..5b8c5301 100644 --- a/cmd/bd/testdata/init.txt +++ b/cmd/bd/testdata/init.txt @@ -2,3 +2,6 @@ bd init --prefix test stdout 'initialized successfully' exists .beads/test.db +exists .beads/.gitignore +grep '^\*\.db$' .beads/.gitignore +grep '^\*\.db-\*$' .beads/.gitignore