From caddeb12d58e58259c4fea13fb32a76dc2d71fb3 Mon Sep 17 00:00:00 2001 From: bigfrog Date: Wed, 9 Sep 2026 14:44:12 +0800 Subject: [PATCH] Fix SVN command execution fail problem. --- pkg/commands/git_commands/svn_commands.go | 6 +++--- pkg/gui/controllers/branches_controller.go | 9 ++++++--- pkg/gui/controllers/remote_branches_controller.go | 4 ++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/commands/git_commands/svn_commands.go b/pkg/commands/git_commands/svn_commands.go index 29f56492f..0cd9f2c07 100644 --- a/pkg/commands/git_commands/svn_commands.go +++ b/pkg/commands/git_commands/svn_commands.go @@ -58,7 +58,7 @@ func (self *SvnCommands) GetSvnUrl() (string, error) { if err != nil { return "", err } - self.svnUrlCache = strings.TrimSpace(output) + self.svnUrlCache = strings.TrimSuffix(strings.TrimSpace(output), "/") self.svnUrlCacheExpiry = time.Now().Add(60 * time.Second) return self.svnUrlCache, nil } @@ -238,7 +238,7 @@ func (self *SvnCommands) DeleteServerBranch(task gocui.Task, branchPath string) if err != nil { return err } - cmdArgs := NewGitCmd("svn").Arg("delete").Arg(fmt.Sprintf("%s/%s", svnUrl, branchPath)).Arg("-m").Arg(fmt.Sprintf("Delete branch %s", branchPath)).ToArgv() + cmdArgs := []string{"svn", "delete", fmt.Sprintf("%s/%s", svnUrl, branchPath), "-m", fmt.Sprintf("Delete branch %s", branchPath)} return self.cmd.New(cmdArgs).PromptOnCredentialRequest(task).Run() } @@ -312,7 +312,7 @@ func (self *SvnCommands) CheckBranchStatus(task gocui.Task, refType string) (map svnListAttempted = true // svn list 使用 --non-interactive 防止网络不通时永久阻塞 svnListOutput, listErr := self.cmd.New( - NewGitCmd("svn").Arg("list").Arg("--non-interactive").Arg(svnUrl+"/"+m.SvnPath).ToArgv(), + []string{"svn", "list", "--non-interactive", svnUrl+"/"+m.SvnPath}, ).DontLog().RunWithOutput() if listErr == nil { svnListOk = true diff --git a/pkg/gui/controllers/branches_controller.go b/pkg/gui/controllers/branches_controller.go index a08872944..f28449160 100644 --- a/pkg/gui/controllers/branches_controller.go +++ b/pkg/gui/controllers/branches_controller.go @@ -968,14 +968,17 @@ func (self *BranchesController)newSvnBranch(selectedBranch *models.Branch) error return self.c.WithWaitingStatus(self.c.Tr.SvnFetchingStatus, func(task gocui.Task) error { if err := self.c.Git().Svn.CreateBranch(branchName); err != nil { - return fmt.Errorf(self.c.Tr.SvnOperationFailed, map[string]string{"error": err.Error()}) + return fmt.Errorf("%s", utils.ResolvePlaceholderString( + self.c.Tr.SvnOperationFailed, + map[string]string{"error": err.Error()}, + )) } if err := self.c.Git().Svn.Fetch(); err != nil { - return fmt.Errorf(self.c.Tr.SvnFetchFailed) + return errors.New(self.c.Tr.SvnFetchFailed) } - self.c.Refresh(types.RefreshOptions{ + self.c.RefreshFromWorker(types.RefreshOptions{ Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}, }) return nil diff --git a/pkg/gui/controllers/remote_branches_controller.go b/pkg/gui/controllers/remote_branches_controller.go index d5a51342b..74ae209b4 100644 --- a/pkg/gui/controllers/remote_branches_controller.go +++ b/pkg/gui/controllers/remote_branches_controller.go @@ -254,7 +254,7 @@ func (self *RemoteBranchesController) deleteSvnLocalRefs(selectedBranches []*mod } } self.c.Contexts().RemoteBranches.CollapseRangeSelectionToTop() - self.c.Refresh(types.RefreshOptions{ + self.c.RefreshFromWorker(types.RefreshOptions{ Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}, }) return nil @@ -288,7 +288,7 @@ func (self *RemoteBranchesController) confirmDeleteSvnBoth(selectedBranches []*m _ = self.c.Git().Svn.DeleteLocalRef(refName) } self.c.Contexts().RemoteBranches.CollapseRangeSelectionToTop() - self.c.Refresh(types.RefreshOptions{ + self.c.RefreshFromWorker(types.RefreshOptions{ Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}, }) return nil