feat: add Git worktree compatibility (PR #478)
Adds comprehensive Git worktree support for beads issue tracking: Core changes: - New internal/git/gitdir.go package for worktree detection - GetGitDir() returns proper .git location (main repo, not worktree) - Updated all hooks to use git.GetGitDir() instead of local helper - BeadsDir() now prioritizes main repository's .beads directory Features: - Hooks auto-install in main repo when run from worktree - Shared .beads directory across all worktrees - Config option no-install-hooks to disable auto-install - New bd worktree subcommand for diagnostics Documentation: - New docs/WORKTREES.md with setup instructions - Updated CHANGELOG.md and AGENT_INSTRUCTIONS.md Testing: - Updated tests to use exported git.GetGitDir() - Added worktree detection tests Co-authored-by: Claude <noreply@anthropic.com> Closes: #478
This commit is contained in:
@@ -6,6 +6,8 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/steveyegge/beads/internal/git"
|
||||
)
|
||||
|
||||
func TestDetectExistingHooks(t *testing.T) {
|
||||
@@ -18,9 +20,9 @@ func TestDetectExistingHooks(t *testing.T) {
|
||||
t.Skipf("Skipping test: git init failed: %v", err)
|
||||
}
|
||||
|
||||
gitDirPath, err := getGitDir()
|
||||
gitDirPath, err := git.GetGitDir()
|
||||
if err != nil {
|
||||
t.Fatalf("getGitDir() failed: %v", err)
|
||||
t.Fatalf("git.GetGitDir() failed: %v", err)
|
||||
}
|
||||
hooksDir := filepath.Join(gitDirPath, "hooks")
|
||||
|
||||
@@ -112,9 +114,9 @@ func TestInstallGitHooks_NoExistingHooks(t *testing.T) {
|
||||
t.Skipf("Skipping test: git init failed: %v", err)
|
||||
}
|
||||
|
||||
gitDirPath, err := getGitDir()
|
||||
gitDirPath, err := git.GetGitDir()
|
||||
if err != nil {
|
||||
t.Fatalf("getGitDir() failed: %v", err)
|
||||
t.Fatalf("git.GetGitDir() failed: %v", err)
|
||||
}
|
||||
hooksDir := filepath.Join(gitDirPath, "hooks")
|
||||
|
||||
@@ -154,9 +156,9 @@ func TestInstallGitHooks_ExistingHookBackup(t *testing.T) {
|
||||
t.Skipf("Skipping test: git init failed: %v", err)
|
||||
}
|
||||
|
||||
gitDirPath, err := getGitDir()
|
||||
gitDirPath, err := git.GetGitDir()
|
||||
if err != nil {
|
||||
t.Fatalf("getGitDir() failed: %v", err)
|
||||
t.Fatalf("git.GetGitDir() failed: %v", err)
|
||||
}
|
||||
hooksDir := filepath.Join(gitDirPath, "hooks")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user