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.
2021-12-05 23:52:26 +02:00
|
|
|
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 {
|
2022-01-08 06:46:35 +02:00
|
|
|
result := make([]*models.Remote, 0, len(names))
|
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.
2021-12-05 23:52:26 +02:00
|
|
|
|
|
|
|
for _, name := range names {
|
|
|
|
result = append(result, &models.Remote{Name: name})
|
|
|
|
}
|
|
|
|
|
|
|
|
return result
|
|
|
|
}
|