1
0
Fork 0
forked from forgejo/forgejo

Compare SSH_DOMAIN when parsing submodule URLs (#12753)

Right now we only compare the hostname from a submodule with the prefixURL it is viewed from to check if the submodule is hosted on the same Gitea instance. This adds an additional check to compare it against SSH_DOMAIN as well since the same Gitea instance might have a different hostname for SSH and if the submodule uses that hostname we should also detect that and link to the proper DOMAIN value.

Fixes #12747, #9756
This commit is contained in:
mrsdizzie 2020-09-07 20:08:10 -04:00 committed by GitHub
parent 9af60ce0bb
commit 489c8a1478
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 23 deletions

View file

@ -39,7 +39,7 @@ func NewSubModuleFile(c *Commit, refURL, refID string) *SubModuleFile {
}
}
func getRefURL(refURL, urlPrefix, repoFullName string) string {
func getRefURL(refURL, urlPrefix, repoFullName, sshDomain string) string {
if refURL == "" {
return ""
}
@ -76,7 +76,7 @@ func getRefURL(refURL, urlPrefix, repoFullName string) string {
pth = "/" + pth
}
if urlPrefixHostname == refHostname {
if urlPrefixHostname == refHostname || refHostname == sshDomain {
return urlPrefix + path.Clean(path.Join("/", pth))
}
return "http://" + refHostname + pth
@ -102,7 +102,7 @@ func getRefURL(refURL, urlPrefix, repoFullName string) string {
return ref.Scheme + "://" + fmt.Sprintf("%v", ref.User) + "@" + ref.Host + ref.Path
}
return ref.Scheme + "://" + ref.Host + ref.Path
} else if urlPrefixHostname == refHostname {
} else if urlPrefixHostname == refHostname || refHostname == sshDomain {
return urlPrefix + path.Clean(path.Join("/", ref.Path))
} else {
return "http://" + refHostname + ref.Path
@ -114,8 +114,8 @@ func getRefURL(refURL, urlPrefix, repoFullName string) string {
}
// RefURL guesses and returns reference URL.
func (sf *SubModuleFile) RefURL(urlPrefix string, repoFullName string) string {
return getRefURL(sf.refURL, urlPrefix, repoFullName)
func (sf *SubModuleFile) RefURL(urlPrefix, repoFullName, sshDomain string) string {
return getRefURL(sf.refURL, urlPrefix, repoFullName, sshDomain)
}
// RefID returns reference ID.