summaryrefslogtreecommitdiffstats
path: root/modules/git/submodule.go
diff options
context:
space:
mode:
authormrsdizzie <info@mrsdizzie.com>2020-09-07 20:08:10 -0400
committerGitHub <noreply@github.com>2020-09-07 20:08:10 -0400
commit489c8a1478885737b8e42099fab673c6b1f3640d (patch)
tree7e246c70f0224ed9c536f38895c789adac88d1b2 /modules/git/submodule.go
parent9af60ce0bb5d6fe19cf2c3ecd37e658e8952400a (diff)
downloadgitea-489c8a1478885737b8e42099fab673c6b1f3640d.tar.gz
gitea-489c8a1478885737b8e42099fab673c6b1f3640d.zip
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
Diffstat (limited to 'modules/git/submodule.go')
-rw-r--r--modules/git/submodule.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/modules/git/submodule.go b/modules/git/submodule.go
index bb094bda5d..231827f1e9 100644
--- a/modules/git/submodule.go
+++ b/modules/git/submodule.go
@@ -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.