Fix SVN command execution fail problem.

This commit is contained in:
bigfrog 2026-09-09 14:44:12 +08:00
parent 061a1ea859
commit caddeb12d5
3 changed files with 11 additions and 8 deletions

View file

@ -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

View file

@ -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

View file

@ -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