feat(rig): Add --branch flag for custom default branch
Add --branch flag to `gt rig add` to specify a custom default branch instead of auto-detecting from remote. This supports repositories that use non-standard default branches like `develop` or `release`. Changes: - Add --branch flag to `gt rig add` command - Store default_branch in rig config.json - Propagate default branch to refinery, witness, daemon, and all commands - Rename ensureMainBranch to ensureDefaultBranch for clarity - Add Rig.DefaultBranch() method for consistent access - Update crew/manager.go and swarm/manager.go to use rig config Based on PR #49 by @kustrun - rebased and extended with additional fixes. Co-authored-by: kustrun <kustrun@users.noreply.github.com> 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
committed by
Steve Yegge
parent
31df1bb2c1
commit
eea4435269
@@ -11,6 +11,7 @@ import (
|
||||
"github.com/steveyegge/gastown/internal/beads"
|
||||
"github.com/steveyegge/gastown/internal/config"
|
||||
"github.com/steveyegge/gastown/internal/constants"
|
||||
"github.com/steveyegge/gastown/internal/rig"
|
||||
"github.com/steveyegge/gastown/internal/session"
|
||||
"github.com/steveyegge/gastown/internal/tmux"
|
||||
)
|
||||
@@ -467,6 +468,20 @@ func (d *Daemon) applySessionTheme(sessionName string, parsed *ParsedIdentity) {
|
||||
// syncWorkspace syncs a git workspace before starting a new session.
|
||||
// This ensures agents with persistent clones (like refinery) start with current code.
|
||||
func (d *Daemon) syncWorkspace(workDir string) {
|
||||
// Determine default branch from rig config
|
||||
// workDir is like <townRoot>/<rigName>/<role>/rig or <townRoot>/<rigName>/crew/<name>
|
||||
defaultBranch := "main" // fallback
|
||||
rel, err := filepath.Rel(d.config.TownRoot, workDir)
|
||||
if err == nil {
|
||||
parts := strings.Split(rel, string(filepath.Separator))
|
||||
if len(parts) > 0 {
|
||||
rigPath := filepath.Join(d.config.TownRoot, parts[0])
|
||||
if rigCfg, err := rig.LoadRigConfig(rigPath); err == nil && rigCfg.DefaultBranch != "" {
|
||||
defaultBranch = rigCfg.DefaultBranch
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fetch latest from origin
|
||||
fetchCmd := exec.Command("git", "fetch", "origin")
|
||||
fetchCmd.Dir = workDir
|
||||
@@ -475,7 +490,7 @@ func (d *Daemon) syncWorkspace(workDir string) {
|
||||
}
|
||||
|
||||
// Pull with rebase to incorporate changes
|
||||
pullCmd := exec.Command("git", "pull", "--rebase", "origin", "main")
|
||||
pullCmd := exec.Command("git", "pull", "--rebase", "origin", defaultBranch)
|
||||
pullCmd.Dir = workDir
|
||||
if err := pullCmd.Run(); err != nil {
|
||||
d.logger.Printf("Warning: git pull failed in %s: %v", workDir, err)
|
||||
|
||||
Reference in New Issue
Block a user