mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-06-17 00:18:05 +02:00
(#2288) quote remoteName before compiling regex
If the remote name contains special regex-chars, the compilation of the regex might fail. Quoting the remoteName ensures that all special chars in the remoteName are properly escaped before compiling the regex.
This commit is contained in:
@ -45,7 +45,7 @@ func (self *RemoteLoader) GetRemotes() ([]*models.Remote, error) {
|
|||||||
remotes := slices.Map(goGitRemotes, func(goGitRemote *gogit.Remote) *models.Remote {
|
remotes := slices.Map(goGitRemotes, func(goGitRemote *gogit.Remote) *models.Remote {
|
||||||
remoteName := goGitRemote.Config().Name
|
remoteName := goGitRemote.Config().Name
|
||||||
|
|
||||||
re := regexp.MustCompile(fmt.Sprintf(`(?m)^\s*%s\/([\S]+)`, remoteName))
|
re := regexp.MustCompile(fmt.Sprintf(`(?m)^\s*%s\/([\S]+)`, regexp.QuoteMeta(remoteName)))
|
||||||
matches := re.FindAllStringSubmatch(remoteBranchesStr, -1)
|
matches := re.FindAllStringSubmatch(remoteBranchesStr, -1)
|
||||||
branches := slices.Map(matches, func(match []string) *models.RemoteBranch {
|
branches := slices.Map(matches, func(match []string) *models.RemoteBranch {
|
||||||
return &models.RemoteBranch{
|
return &models.RemoteBranch{
|
||||||
|
@ -125,3 +125,8 @@ func (s *Shell) StashWithMessage(message string) *Shell {
|
|||||||
s.RunCommand(fmt.Sprintf(`git stash -m "%s"`, message))
|
s.RunCommand(fmt.Sprintf(`git stash -m "%s"`, message))
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Shell) SetConfig(key string, value string) *Shell {
|
||||||
|
s.RunCommand(fmt.Sprintf(`git config --local "%s" %s`, key, value))
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
26
pkg/integration/tests/config/remote_named_star.go
Normal file
26
pkg/integration/tests/config/remote_named_star.go
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
package config
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/config"
|
||||||
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
||||||
|
)
|
||||||
|
|
||||||
|
var RemoteNamedStar = NewIntegrationTest(NewIntegrationTestArgs{
|
||||||
|
Description: "Having a config remote.*",
|
||||||
|
ExtraCmdArgs: "",
|
||||||
|
Skip: false,
|
||||||
|
SetupRepo: func(shell *Shell) {
|
||||||
|
shell.
|
||||||
|
SetConfig("remote.*.prune", "true").
|
||||||
|
CreateNCommits(2)
|
||||||
|
},
|
||||||
|
SetupConfig: func(cfg *config.AppConfig) {},
|
||||||
|
Run: func(
|
||||||
|
shell *Shell,
|
||||||
|
input *Input,
|
||||||
|
assert *Assert,
|
||||||
|
keys config.KeybindingConfig,
|
||||||
|
) {
|
||||||
|
assert.AtLeastOneCommit()
|
||||||
|
},
|
||||||
|
})
|
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/branch"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/branch"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/cherry_pick"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/commit"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/config"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/custom_commands"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/file"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/file"
|
||||||
"github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase"
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/interactive_rebase"
|
||||||
@ -45,6 +46,7 @@ var tests = []*components.IntegrationTest{
|
|||||||
stash.Rename,
|
stash.Rename,
|
||||||
stash.Stash,
|
stash.Stash,
|
||||||
stash.StashIncludingUntrackedFiles,
|
stash.StashIncludingUntrackedFiles,
|
||||||
|
config.RemoteNamedStar,
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetTests() []*components.IntegrationTest {
|
func GetTests() []*components.IntegrationTest {
|
||||||
|
Reference in New Issue
Block a user