mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-31 23:19:40 +02:00
Suggest existing remote for non-tracking branch
Currently, when pushing or pulling a branch that has no tracking remote, lazygit suggests the (hard-coded) remote named 'origin'. However, a repository might not have a remote with this name, in which case the suggestion makes no sense. This happens to me quite regularly when I choose a more meaningful name than 'origin' for a remote. This change keeps the current behavior by suggesting 'origin' when there is either a remote with that name or no remote at all. However, when 'origin' does not exist, the name of the first remote is suggested. Suggest existing remote for non-tracking branch Currently, when pushing or pulling a branch that has no tracking remote, lazygit suggests the (hard-coded) remote named 'origin'. However, a repository might not have a remote with this name, in which case the suggestion makes no sense. This happens to me quite regularly when I choose a more meaningful name than 'origin' for a remote. This change keeps the current behavior by suggesting 'origin' when there is either a remote with that name or no remote at all. However, when 'origin' does not exist, the name of the first existing remote is suggested.
This commit is contained in:
parent
630de34bf2
commit
38743ec99f
@ -660,9 +660,11 @@ func (gui *Gui) handlePullFiles() error {
|
||||
}
|
||||
}
|
||||
|
||||
suggestedRemote := getSuggestedRemote(gui.State.Remotes)
|
||||
|
||||
return gui.prompt(promptOpts{
|
||||
title: gui.Tr.EnterUpstream,
|
||||
initialContent: "origin/" + currentBranch.Name,
|
||||
initialContent: suggestedRemote + "/" + currentBranch.Name,
|
||||
findSuggestionsFunc: gui.getRemoteBranchesSuggestionsFunc("/"),
|
||||
handleConfirm: func(upstream string) error {
|
||||
if err := gui.GitCommand.SetUpstreamBranch(upstream); err != nil {
|
||||
@ -797,12 +799,14 @@ func (gui *Gui) pushFiles() error {
|
||||
)
|
||||
}
|
||||
|
||||
suggestedRemote := getSuggestedRemote(gui.State.Remotes)
|
||||
|
||||
if gui.GitCommand.PushToCurrent {
|
||||
return gui.push(pushOpts{setUpstream: true})
|
||||
} else {
|
||||
return gui.prompt(promptOpts{
|
||||
title: gui.Tr.EnterUpstream,
|
||||
initialContent: "origin " + currentBranch.Name,
|
||||
initialContent: suggestedRemote + " " + currentBranch.Name,
|
||||
findSuggestionsFunc: gui.getRemoteBranchesSuggestionsFunc(" "),
|
||||
handleConfirm: func(upstream string) error {
|
||||
var upstreamBranch, upstreamRemote string
|
||||
@ -827,6 +831,20 @@ func (gui *Gui) pushFiles() error {
|
||||
}
|
||||
}
|
||||
|
||||
func getSuggestedRemote(remotes []*models.Remote) string {
|
||||
if len(remotes) == 0 {
|
||||
return "origin"
|
||||
}
|
||||
|
||||
for _, remote := range remotes {
|
||||
if remote.Name == "origin" {
|
||||
return remote.Name
|
||||
}
|
||||
}
|
||||
|
||||
return remotes[0].Name
|
||||
}
|
||||
|
||||
func (gui *Gui) requestToForcePush() error {
|
||||
forcePushDisabled := gui.Config.GetUserConfig().Git.DisableForcePushing
|
||||
if forcePushDisabled {
|
||||
|
34
pkg/gui/files_panel_test.go
Normal file
34
pkg/gui/files_panel_test.go
Normal file
@ -0,0 +1,34 @@
|
||||
package gui
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/jesseduffield/lazygit/pkg/commands/models"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGetSuggestedRemote(t *testing.T) {
|
||||
cases := []struct {
|
||||
remotes []*models.Remote
|
||||
expected string
|
||||
}{
|
||||
{mkRemoteList(), "origin"},
|
||||
{mkRemoteList("upstream", "origin", "foo"), "origin"},
|
||||
{mkRemoteList("upstream", "foo", "bar"), "upstream"},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
result := getSuggestedRemote(c.remotes)
|
||||
assert.EqualValues(t, c.expected, result)
|
||||
}
|
||||
}
|
||||
|
||||
func mkRemoteList(names ...string) []*models.Remote {
|
||||
var result []*models.Remote
|
||||
|
||||
for _, name := range names {
|
||||
result = append(result, &models.Remote{Name: name})
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user