diff --git a/pkg/gui/controllers/helpers/refs_helper.go b/pkg/gui/controllers/helpers/refs_helper.go index 808b7866f..b69a68c79 100644 --- a/pkg/gui/controllers/helpers/refs_helper.go +++ b/pkg/gui/controllers/helpers/refs_helper.go @@ -325,13 +325,10 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest if suggestedBranchName == "" { var err error - suggestedBranchName, err = utils.ResolveTemplate(self.c.UserConfig().Git.BranchPrefix, nil, template.FuncMap{ - "runCommand": self.c.Git().Custom.TemplateFunctionRunCommand, - }) + suggestedBranchName, err = self.getSuggestedBranchName() if err != nil { return err } - suggestedBranchName = strings.ReplaceAll(suggestedBranchName, "\t", " ") } refresh := func() error { @@ -399,16 +396,21 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error { return err } - withNewBranchNamePrompt := func(baseBranchName string, f func(string, string) error) { + withNewBranchNamePrompt := func(baseBranchName string, f func(string, string) error) error { prompt := utils.ResolvePlaceholderString( self.c.Tr.NewBranchNameBranchOff, map[string]string{ "branchName": baseBranchName, }, ) + suggestedBranchName, err := self.getSuggestedBranchName() + if err != nil { + return err + } self.c.Prompt(types.PromptOpts{ - Title: prompt, + Title: prompt, + InitialContent: suggestedBranchName, HandleConfirm: func(response string) error { self.c.LogAction(self.c.Tr.MoveCommitsToNewBranch) newBranchName := SanitizedBranchName(response) @@ -417,6 +419,7 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error { }) }, }) + return nil } isMainBranch := lo.Contains(self.c.UserConfig().Git.MainBranches, currentBranch.Name) @@ -431,8 +434,7 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error { Title: self.c.Tr.MoveCommitsToNewBranch, Prompt: prompt, HandleConfirm: func() error { - withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch) - return nil + return withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch) }, }) return nil @@ -452,17 +454,15 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error { { Label: fmt.Sprintf(self.c.Tr.MoveCommitsToNewBranchFromBaseItem, shortBaseBranchName), OnPress: func() error { - withNewBranchNamePrompt(shortBaseBranchName, func(currentBranch string, newBranchName string) error { + return withNewBranchNamePrompt(shortBaseBranchName, func(currentBranch string, newBranchName string) error { return self.moveCommitsToNewBranchOffOfMainBranch(currentBranch, newBranchName, baseBranchRef) }) - return nil }, }, { Label: fmt.Sprintf(self.c.Tr.MoveCommitsToNewBranchStackedItem, currentBranch.Name), OnPress: func() error { - withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch) - return nil + return withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch) }, }, }, @@ -587,3 +587,14 @@ func (self *RefsHelper) ParseRemoteBranchName(fullBranchName string) (string, st func IsSwitchBranchUncommittedChangesError(err error) bool { return strings.Contains(err.Error(), "Please commit your changes or stash them before you switch branch") } + +func (self *RefsHelper) getSuggestedBranchName() (string, error) { + suggestedBranchName, err := utils.ResolveTemplate(self.c.UserConfig().Git.BranchPrefix, nil, template.FuncMap{ + "runCommand": self.c.Git().Custom.TemplateFunctionRunCommand, + }) + if err != nil { + return suggestedBranchName, err + } + suggestedBranchName = strings.ReplaceAll(suggestedBranchName, "\t", " ") + return suggestedBranchName, nil +} diff --git a/pkg/integration/tests/branch/move_commits_to_new_branch_keep_stacked.go b/pkg/integration/tests/branch/move_commits_to_new_branch_keep_stacked.go index 0b9828ef1..143adad0b 100644 --- a/pkg/integration/tests/branch/move_commits_to_new_branch_keep_stacked.go +++ b/pkg/integration/tests/branch/move_commits_to_new_branch_keep_stacked.go @@ -9,7 +9,9 @@ var MoveCommitsToNewBranchKeepStacked = NewIntegrationTest(NewIntegrationTestArg Description: "Create a new branch from the commits that you accidentally made on the wrong branch; choosing stacked on current branch", ExtraCmdArgs: []string{}, Skip: false, - SetupConfig: func(config *config.AppConfig) {}, + SetupConfig: func(config *config.AppConfig) { + config.GetUserConfig().Git.BranchPrefix = "myprefix/" + }, SetupRepo: func(shell *Shell) { shell.EmptyCommit("initial commit") shell.CloneIntoRemote("origin") @@ -42,12 +44,13 @@ var MoveCommitsToNewBranchKeepStacked = NewIntegrationTest(NewIntegrationTestArg t.ExpectPopup().Prompt(). Title(Equals("New branch name (branch is off of 'feature')")). + InitialText(Equals("myprefix/")). Type("new branch"). Confirm() t.Views().Branches(). Lines( - Contains("new-branch").DoesNotContain("↑").IsSelected(), + Contains("myprefix/new-branch").DoesNotContain("↑").IsSelected(), Contains("feature ✓"), Contains("master ✓"), )