mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-11-27 22:38:09 +02:00
Use branchPrefix when moving commits to new branch (#4604)
- **PR Description** When pressing N to move new commits to a new branch we get greeted with an empty prompt, this PR makes it so we fill the empty prompt with a suggestion taken from branchPrefix, similar to the good old create a new branch.
This commit is contained in:
@@ -325,13 +325,10 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
|
|||||||
if suggestedBranchName == "" {
|
if suggestedBranchName == "" {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
suggestedBranchName, err = utils.ResolveTemplate(self.c.UserConfig().Git.BranchPrefix, nil, template.FuncMap{
|
suggestedBranchName, err = self.getSuggestedBranchName()
|
||||||
"runCommand": self.c.Git().Custom.TemplateFunctionRunCommand,
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
suggestedBranchName = strings.ReplaceAll(suggestedBranchName, "\t", " ")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh := func() error {
|
refresh := func() error {
|
||||||
@@ -399,16 +396,21 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
withNewBranchNamePrompt := func(baseBranchName string, f func(string, string) error) {
|
withNewBranchNamePrompt := func(baseBranchName string, f func(string, string) error) error {
|
||||||
prompt := utils.ResolvePlaceholderString(
|
prompt := utils.ResolvePlaceholderString(
|
||||||
self.c.Tr.NewBranchNameBranchOff,
|
self.c.Tr.NewBranchNameBranchOff,
|
||||||
map[string]string{
|
map[string]string{
|
||||||
"branchName": baseBranchName,
|
"branchName": baseBranchName,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
suggestedBranchName, err := self.getSuggestedBranchName()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
self.c.Prompt(types.PromptOpts{
|
self.c.Prompt(types.PromptOpts{
|
||||||
Title: prompt,
|
Title: prompt,
|
||||||
|
InitialContent: suggestedBranchName,
|
||||||
HandleConfirm: func(response string) error {
|
HandleConfirm: func(response string) error {
|
||||||
self.c.LogAction(self.c.Tr.MoveCommitsToNewBranch)
|
self.c.LogAction(self.c.Tr.MoveCommitsToNewBranch)
|
||||||
newBranchName := SanitizedBranchName(response)
|
newBranchName := SanitizedBranchName(response)
|
||||||
@@ -417,6 +419,7 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
isMainBranch := lo.Contains(self.c.UserConfig().Git.MainBranches, currentBranch.Name)
|
isMainBranch := lo.Contains(self.c.UserConfig().Git.MainBranches, currentBranch.Name)
|
||||||
@@ -431,8 +434,7 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error {
|
|||||||
Title: self.c.Tr.MoveCommitsToNewBranch,
|
Title: self.c.Tr.MoveCommitsToNewBranch,
|
||||||
Prompt: prompt,
|
Prompt: prompt,
|
||||||
HandleConfirm: func() error {
|
HandleConfirm: func() error {
|
||||||
withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch)
|
return withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch)
|
||||||
return nil
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
@@ -452,17 +454,15 @@ func (self *RefsHelper) MoveCommitsToNewBranch() error {
|
|||||||
{
|
{
|
||||||
Label: fmt.Sprintf(self.c.Tr.MoveCommitsToNewBranchFromBaseItem, shortBaseBranchName),
|
Label: fmt.Sprintf(self.c.Tr.MoveCommitsToNewBranchFromBaseItem, shortBaseBranchName),
|
||||||
OnPress: func() error {
|
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 self.moveCommitsToNewBranchOffOfMainBranch(currentBranch, newBranchName, baseBranchRef)
|
||||||
})
|
})
|
||||||
return nil
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Label: fmt.Sprintf(self.c.Tr.MoveCommitsToNewBranchStackedItem, currentBranch.Name),
|
Label: fmt.Sprintf(self.c.Tr.MoveCommitsToNewBranchStackedItem, currentBranch.Name),
|
||||||
OnPress: func() error {
|
OnPress: func() error {
|
||||||
withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch)
|
return withNewBranchNamePrompt(currentBranch.Name, self.moveCommitsToNewBranchStackedOnCurrentBranch)
|
||||||
return nil
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -587,3 +587,14 @@ func (self *RefsHelper) ParseRemoteBranchName(fullBranchName string) (string, st
|
|||||||
func IsSwitchBranchUncommittedChangesError(err error) bool {
|
func IsSwitchBranchUncommittedChangesError(err error) bool {
|
||||||
return strings.Contains(err.Error(), "Please commit your changes or stash them before you switch branch")
|
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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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",
|
Description: "Create a new branch from the commits that you accidentally made on the wrong branch; choosing stacked on current branch",
|
||||||
ExtraCmdArgs: []string{},
|
ExtraCmdArgs: []string{},
|
||||||
Skip: false,
|
Skip: false,
|
||||||
SetupConfig: func(config *config.AppConfig) {},
|
SetupConfig: func(config *config.AppConfig) {
|
||||||
|
config.GetUserConfig().Git.BranchPrefix = "myprefix/"
|
||||||
|
},
|
||||||
SetupRepo: func(shell *Shell) {
|
SetupRepo: func(shell *Shell) {
|
||||||
shell.EmptyCommit("initial commit")
|
shell.EmptyCommit("initial commit")
|
||||||
shell.CloneIntoRemote("origin")
|
shell.CloneIntoRemote("origin")
|
||||||
@@ -42,12 +44,13 @@ var MoveCommitsToNewBranchKeepStacked = NewIntegrationTest(NewIntegrationTestArg
|
|||||||
|
|
||||||
t.ExpectPopup().Prompt().
|
t.ExpectPopup().Prompt().
|
||||||
Title(Equals("New branch name (branch is off of 'feature')")).
|
Title(Equals("New branch name (branch is off of 'feature')")).
|
||||||
|
InitialText(Equals("myprefix/")).
|
||||||
Type("new branch").
|
Type("new branch").
|
||||||
Confirm()
|
Confirm()
|
||||||
|
|
||||||
t.Views().Branches().
|
t.Views().Branches().
|
||||||
Lines(
|
Lines(
|
||||||
Contains("new-branch").DoesNotContain("↑").IsSelected(),
|
Contains("myprefix/new-branch").DoesNotContain("↑").IsSelected(),
|
||||||
Contains("feature ✓"),
|
Contains("feature ✓"),
|
||||||
Contains("master ✓"),
|
Contains("master ✓"),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user