Correctly match login by ssh host with port #391

Merged
6543 merged 3 commits from noerw/tea:fix-380 into master 3 months ago
  1. 7
      modules/context/context.go
  2. 4
      modules/git/url.go

7
modules/context/context.go

@ -185,8 +185,9 @@ func contextFromLocalRepo(repoPath, remoteValue string) (*git.TeaRepo, *config.L
return repo, nil, "", err
}
for _, l := range logins {
sshHost := l.GetSSHHost()
for _, u := range remoteConfig.URLs {
p, err := git.ParseURL(strings.TrimSpace(u))
p, err := git.ParseURL(u)
if err != nil {
return repo, nil, "", fmt.Errorf("Git remote URL parse failed: %s", err.Error())
}
@ -197,8 +198,8 @@ func contextFromLocalRepo(repoPath, remoteValue string) (*git.TeaRepo, *config.L
return repo, &l, strings.TrimSuffix(path, ".git"), nil
}
} else if strings.EqualFold(p.Scheme, "ssh") {
if l.GetSSHHost() == strings.Split(p.Host, ":")[0] {
return repo, &l, strings.TrimLeft(strings.TrimSuffix(p.Path, ".git"), "/"), nil
if sshHost == p.Host {
return repo, &l, strings.TrimLeft(p.Path, "/"), nil
}
}
}

4
modules/git/url.go

@ -20,6 +20,10 @@ type URLParser struct {
// Parse parses the git URL
func (p *URLParser) Parse(rawURL string) (u *url.URL, err error) {
rawURL = strings.TrimSpace(rawURL)
// convert the weird git ssh url format to a canonical url:
// git@gitea.com:gitea/tea -> ssh://git@gitea.com/gitea/tea
if !protocolRe.MatchString(rawURL) &&
strings.Contains(rawURL, ":") &&
// not a Windows path

Loading…
Cancel
Save