refactor(work): add diverged branch handling and remove debug logging
Add pull-and-retry logic for diverged branches in dev_work command, matching the behaviour already present in dev_push. Also removes the debug logging added during non-fast-forward detection development. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
82cc620f9d
commit
a4f6e9c224
2 changed files with 32 additions and 4 deletions
|
|
@ -141,9 +141,7 @@ func runPush(registryPath string, force bool) error {
|
|||
succeeded++
|
||||
} else {
|
||||
// Check if this is a non-fast-forward error (diverged branch)
|
||||
isNFF := git.IsNonFastForward(r.Error)
|
||||
fmt.Fprintf(os.Stderr, "[DEBUG] IsNonFastForward=%v, err=%q\n", isNFF, r.Error)
|
||||
if isNFF {
|
||||
if git.IsNonFastForward(r.Error) {
|
||||
fmt.Printf(" %s %s: %s\n", warningStyle.Render("!"), r.Name, i18n.T("cmd.dev.push.diverged"))
|
||||
divergedRepos = append(divergedRepos, r)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -186,13 +186,43 @@ func runWork(registryPath string, statusOnly, autoCommit bool) error {
|
|||
|
||||
results := git.PushMultiple(ctx, pushPaths, names)
|
||||
|
||||
var divergedRepos []git.PushResult
|
||||
|
||||
for _, r := range results {
|
||||
if r.Success {
|
||||
fmt.Printf(" %s %s\n", successStyle.Render("v"), r.Name)
|
||||
} else {
|
||||
// Check if this is a non-fast-forward error (diverged branch)
|
||||
if git.IsNonFastForward(r.Error) {
|
||||
fmt.Printf(" %s %s: %s\n", warningStyle.Render("!"), r.Name, i18n.T("cmd.dev.push.diverged"))
|
||||
divergedRepos = append(divergedRepos, r)
|
||||
} else {
|
||||
fmt.Printf(" %s %s: %s\n", errorStyle.Render("x"), r.Name, r.Error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle diverged repos - offer to pull and retry
|
||||
if len(divergedRepos) > 0 {
|
||||
fmt.Println()
|
||||
fmt.Printf("%s\n", i18n.T("cmd.dev.push.diverged_help"))
|
||||
if shared.Confirm(i18n.T("cmd.dev.push.pull_and_retry")) {
|
||||
fmt.Println()
|
||||
for _, r := range divergedRepos {
|
||||
fmt.Printf(" %s %s...\n", dimStyle.Render("↓"), r.Name)
|
||||
if err := git.Pull(ctx, r.Path); err != nil {
|
||||
fmt.Printf(" %s %s: %s\n", errorStyle.Render("x"), r.Name, err)
|
||||
continue
|
||||
}
|
||||
fmt.Printf(" %s %s...\n", dimStyle.Render("↑"), r.Name)
|
||||
if err := git.Push(ctx, r.Path); err != nil {
|
||||
fmt.Printf(" %s %s: %s\n", errorStyle.Render("x"), r.Name, err)
|
||||
continue
|
||||
}
|
||||
fmt.Printf(" %s %s\n", successStyle.Render("v"), r.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue