@@ -11,6 +11,7 @@ import ( | |||
"fmt" | |||
"html/template" | |||
"io/ioutil" | |||
"net/url" | |||
"os" | |||
"os/exec" | |||
"path" | |||
@@ -834,7 +835,7 @@ type CloneLink struct { | |||
// ComposeHTTPSCloneURL returns HTTPS clone URL based on given owner and repository name. | |||
func ComposeHTTPSCloneURL(owner, repo string) string { | |||
return fmt.Sprintf("%s%s/%s.git", setting.AppURL, owner, repo) | |||
return fmt.Sprintf("%s%s/%s.git", setting.AppURL, url.QueryEscape(owner), url.QueryEscape(repo)) | |||
} | |||
func (repo *Repository) cloneLink(e Engine, isWiki bool) *CloneLink { |
@@ -209,7 +209,7 @@ func Contexter() macaron.Handler { | |||
if err == nil && len(repo.DefaultBranch) > 0 { | |||
branchName = repo.DefaultBranch | |||
} | |||
prefix := setting.AppURL + path.Join(ownerName, repoName, "src", "branch", branchName) | |||
prefix := setting.AppURL + path.Join(url.QueryEscape(ownerName), url.QueryEscape(repoName), "src", "branch", branchName) | |||
c.Header().Set("Content-Type", "text/html") | |||
c.WriteHeader(http.StatusOK) | |||
c.Write([]byte(com.Expand(`<!doctype html> |
@@ -8,6 +8,7 @@ package context | |||
import ( | |||
"fmt" | |||
"io/ioutil" | |||
"net/url" | |||
"path" | |||
"strings" | |||
@@ -171,7 +172,7 @@ func RetrieveBaseRepo(ctx *Context, repo *models.Repository) { | |||
// ComposeGoGetImport returns go-get-import meta content. | |||
func ComposeGoGetImport(owner, repo string) string { | |||
return path.Join(setting.Domain, setting.AppSubURL, owner, repo) | |||
return path.Join(setting.Domain, setting.AppSubURL, url.QueryEscape(owner), url.QueryEscape(repo)) | |||
} | |||
// EarlyResponseForGoGetMeta responses appropriate go-get meta with status 200 |