* fix go get sub package and add domain on installation to let go get work defaultly * fix import sequence * fix .git problemtags/v1.2.0-rc1
func earlyResponseForGoGetMeta(ctx *Context) { | func earlyResponseForGoGetMeta(ctx *Context) { | ||||
ctx.PlainText(200, []byte(com.Expand(`<meta name="go-import" content="{GoGetImport} git {CloneLink}">`, | ctx.PlainText(200, []byte(com.Expand(`<meta name="go-import" content="{GoGetImport} git {CloneLink}">`, | ||||
map[string]string{ | map[string]string{ | ||||
"GoGetImport": composeGoGetImport(ctx.Params(":username"), ctx.Params(":reponame")), | |||||
"GoGetImport": composeGoGetImport(ctx.Params(":username"), strings.TrimSuffix(ctx.Params(":reponame"), ".git")), | |||||
"CloneLink": models.ComposeHTTPSCloneURL(ctx.Params(":username"), ctx.Params(":reponame")), | "CloneLink": models.ComposeHTTPSCloneURL(ctx.Params(":username"), ctx.Params(":reponame")), | ||||
}))) | }))) | ||||
} | } |
cfg.Section("repository").Key("ROOT").SetValue(form.RepoRootPath) | cfg.Section("repository").Key("ROOT").SetValue(form.RepoRootPath) | ||||
cfg.Section("").Key("RUN_USER").SetValue(form.RunUser) | cfg.Section("").Key("RUN_USER").SetValue(form.RunUser) | ||||
cfg.Section("server").Key("SSH_DOMAIN").SetValue(form.Domain) | cfg.Section("server").Key("SSH_DOMAIN").SetValue(form.Domain) | ||||
cfg.Section("server").Key("DOMAIN").SetValue(form.Domain) | |||||
cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort) | cfg.Section("server").Key("HTTP_PORT").SetValue(form.HTTPPort) | ||||
cfg.Section("server").Key("ROOT_URL").SetValue(form.AppURL) | cfg.Section("server").Key("ROOT_URL").SetValue(form.AppURL) | ||||
"code.gitea.io/gitea/modules/context" | "code.gitea.io/gitea/modules/context" | ||||
"code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
"code.gitea.io/gitea/modules/setting" | "code.gitea.io/gitea/modules/setting" | ||||
"github.com/Unknwon/com" | |||||
) | ) | ||||
func composeGoGetImport(owner, repo, sub string) string { | |||||
return path.Join(setting.Domain, setting.AppSubURL, owner, repo, sub) | |||||
} | |||||
// earlyResponseForGoGetMeta responses appropriate go-get meta with status 200 | |||||
// if user does not have actual access to the requested repository, | |||||
// or the owner or repository does not exist at all. | |||||
// This is particular a workaround for "go get" command which does not respect | |||||
// .netrc file. | |||||
func earlyResponseForGoGetMeta(ctx *context.Context, username, reponame, subpath string) { | |||||
ctx.PlainText(200, []byte(com.Expand(`<meta name="go-import" content="{GoGetImport} git {CloneLink}">`, | |||||
map[string]string{ | |||||
"GoGetImport": composeGoGetImport(username, reponame, subpath), | |||||
"CloneLink": models.ComposeHTTPSCloneURL(username, reponame), | |||||
}))) | |||||
} | |||||
// HTTP implmentation git smart HTTP protocol | // HTTP implmentation git smart HTTP protocol | ||||
func HTTP(ctx *context.Context) { | func HTTP(ctx *context.Context) { | ||||
username := ctx.Params(":username") | username := ctx.Params(":username") | ||||
reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") | reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") | ||||
subpath := ctx.Params("*") | |||||
if ctx.Query("go-get") == "1" { | |||||
earlyResponseForGoGetMeta(ctx, username, reponame, subpath) | |||||
return | |||||
} | |||||
var isPull bool | var isPull bool | ||||
service := ctx.Query("service") | service := ctx.Query("service") |