fix(sync): force-add .beads in worktree for contributor mode (#947)

In contributor mode (bd init --contributor), .beads/ is excluded in
.git/info/exclude to prevent committing upstream issue databases.
However, this exclusion applies to ALL worktrees, including the sync
worktree where .beads/ must be committed.

The fix adds -f flag to git add in commitInWorktree() to force-add
files even when gitignored. This follows the existing pattern in
beads where -f is used for worktree operations (git worktree add -f).

Fixes: bd sync failing with "git add failed in worktree: exit status 1"

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

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Andrey Taranov
2026-01-08 01:40:09 +00:00
committed by GitHub
parent 744d2a7d22
commit 1a64654c48

View File

@@ -726,7 +726,9 @@ func commitInWorktree(ctx context.Context, worktreePath, jsonlRelPath, message s
// Stage the entire .beads directory
beadsRelDir := filepath.Dir(jsonlRelPath)
addCmd := exec.CommandContext(ctx, "git", "-C", worktreePath, "add", beadsRelDir)
// Use -f (force) to add files even if they're gitignored
// In contributor mode, .beads/ is excluded in .git/info/exclude but needs to be tracked in sync branch
addCmd := exec.CommandContext(ctx, "git", "-C", worktreePath, "add", "-f", beadsRelDir)
if err := addCmd.Run(); err != nil {
return fmt.Errorf("git add failed in worktree: %w", err)
}