diff --git a/models/repo/repo.go b/models/repo/repo.go index ee7e62b1196..6ad933d3c9a 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -647,6 +647,10 @@ func (repo *Repository) DescriptionHTML(ctx context.Context) template.HTML { // CloneLink represents different types of clone URLs of repository. type CloneLink struct { + IsWikiRepo bool + SupportSSH bool + SupportHTTPS bool + SSH string HTTPS string Tea string @@ -698,9 +702,12 @@ func ComposeTeaCloneCommand(ctx context.Context, owner, repo string) string { func (repo *Repository) cloneLink(ctx context.Context, doer *user_model.User, repoPathName string) *CloneLink { return &CloneLink{ - SSH: ComposeSSHCloneURL(doer, repo.OwnerName, repoPathName), - HTTPS: ComposeHTTPSCloneURL(ctx, repo.OwnerName, repoPathName), - Tea: ComposeTeaCloneCommand(ctx, repo.OwnerName, repoPathName), + IsWikiRepo: strings.HasSuffix(repoPathName, ".wiki"), + SupportHTTPS: !setting.Repository.DisableHTTPGit, + SupportSSH: !setting.SSH.Disabled && (doer != nil || setting.SSH.ExposeAnonymous), + SSH: ComposeSSHCloneURL(doer, repo.OwnerName, repoPathName), + HTTPS: ComposeHTTPSCloneURL(ctx, repo.OwnerName, repoPathName), + Tea: ComposeTeaCloneCommand(ctx, repo.OwnerName, repoPathName), } } diff --git a/routers/web/repo/view_home.go b/routers/web/repo/view_home.go index fa20a7261ac..ef022db8c56 100644 --- a/routers/web/repo/view_home.go +++ b/routers/web/repo/view_home.go @@ -67,7 +67,7 @@ func prepareHomeSidebarRepoTopics(ctx *context.Context) { ctx.Data["Topics"] = topics } -func prepareOpenWithEditorApps(ctx *context.Context) { +func prepareClonePanel(ctx *context.Context) { var tmplApps []map[string]any apps := setting.Config().Repository.OpenWithEditorApps.Value(ctx) for _, app := range apps { @@ -93,6 +93,12 @@ func prepareOpenWithEditorApps(ctx *context.Context) { }) } ctx.Data["OpenWithEditorApps"] = tmplApps + + if !setting.Repository.DisableDownloadSourceArchives { + // FIXME: here it only uses the shortname in the ref to build the link, it can't distinguish the branch/tag/commit with the same name + // in the future, it's better to use something like "/archive/branch/the-name.zip", "/archive/tag/the-name.zip" */}} + ctx.Data["DownloadArchiveLinkPrefix"] = ctx.Repo.RepoLink + "/archive/" + util.PathEscapeSegments(ctx.Repo.RefFullName.ShortName()) + } } func prepareHomeSidebarCitationFile(entry *git.TreeEntry) func(ctx *context.Context) { @@ -439,7 +445,7 @@ func Home(ctx *context.Context) { isTreePathRoot := ctx.Repo.TreePath == "" prepareFuncs := []func(*context.Context){ - prepareOpenWithEditorApps, + prepareClonePanel, prepareHomeSidebarRepoTopics, checkOutdatedBranch, prepareToRenderDirOrFile(entry), diff --git a/services/context/repo.go b/services/context/repo.go index 87717f730b6..9d8aa97f326 100644 --- a/services/context/repo.go +++ b/services/context/repo.go @@ -589,6 +589,7 @@ func repoAssignmentPrepareTemplateData(ctx *Context, data *repoAssignmentPrepare ctx.Repo.RepoLink = repo.Link() ctx.Data["RepoLink"] = ctx.Repo.RepoLink ctx.Data["FeedURL"] = ctx.Repo.RepoLink + ctx.Data["CloneButtonOriginLink"] = repo.CloneLink(ctx, ctx.Doer) // CloneButtonOriginLink may be rewritten to the WikiCloneLink by the router middleware unit, err := ctx.Repo.Repository.GetUnit(ctx, unit_model.TypeExternalTracker) if err == nil { @@ -643,18 +644,6 @@ func repoAssignmentPrepareTemplateData(ctx *Context, data *repoAssignmentPrepare // If multiple forks are available or if the user can fork to another account, but there is already a fork: open selection dialog ctx.Data["ShowForkModal"] = len(userAndOrgForks) > 1 || (canSignedUserFork && len(userAndOrgForks) > 0) - ctx.Data["RepoCloneLink"] = repo.CloneLink(ctx, ctx.Doer) - - cloneButtonShowHTTPS := !setting.Repository.DisableHTTPGit - cloneButtonShowSSH := !setting.SSH.Disabled && (ctx.IsSigned || setting.SSH.ExposeAnonymous) - if !cloneButtonShowHTTPS && !cloneButtonShowSSH { - // We have to show at least one link, so we just show the HTTPS - cloneButtonShowHTTPS = true - } - ctx.Data["CloneButtonShowHTTPS"] = cloneButtonShowHTTPS - ctx.Data["CloneButtonShowSSH"] = cloneButtonShowSSH - ctx.Data["CloneButtonOriginLink"] = ctx.Data["RepoCloneLink"] // it may be rewritten to the WikiCloneLink by the router middleware - ctx.Data["RepoSearchEnabled"] = setting.Indexer.RepoIndexerEnabled if setting.Indexer.RepoIndexerEnabled { ctx.Data["CodeIndexerUnavailable"] = !code_indexer.IsAvailable(ctx) @@ -778,16 +767,6 @@ func repoAssignmentPrepareRepoTransfer(ctx *Context, data *repoAssignmentPrepare } } -func repoAssignmentHandleGoGet(ctx *Context, data *repoAssignmentPrepareDataStruct) { - repo := data.repo - if ctx.FormString("go-get") == "1" { - ctx.Data["GoGetImport"] = ComposeGoGetImport(ctx, repo.Owner.Name, repo.Name) - fullURLPrefix := repo.HTMLURL() + "/src/branch/" + util.PathEscapeSegments(ctx.Repo.BranchName) - ctx.Data["GoDocDirectory"] = fullURLPrefix + "{/dir}" - ctx.Data["GoDocFile"] = fullURLPrefix + "{/dir}/{file}#L{line}" - } -} - // RepoAssignment returns a middleware to handle repository assignment func RepoAssignment(ctx *Context) { repoAssignmentPreCheck(ctx) @@ -804,7 +783,6 @@ func RepoAssignment(ctx *Context) { repoAssignmentPrepareRepoTransfer, repoAssignmentPrepareBranches, repoAssignmentPreparePullRequests, - repoAssignmentHandleGoGet, } for _, f := range funcs { f(ctx, prepareData) diff --git a/services/repository/create.go b/services/repository/create.go index 636f4a803bc..449ab4a5362 100644 --- a/services/repository/create.go +++ b/services/repository/create.go @@ -84,7 +84,7 @@ func prepareRepoCommit(ctx context.Context, repo *repo_model.Repository, tmpDir return fmt.Errorf("GetRepoInitFile[%s]: %w", opts.Readme, err) } - cloneLink := repo.CloneLink(ctx, nil /* no doer so do not generate user-related SSH link */) + cloneLink := repo.CloneLinkGeneral(ctx) match := map[string]string{ "Name": repo.Name, "Description": util.NormalizeStringEOL(repo.Description), diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl index 58728fd117b..33789130f89 100644 --- a/templates/base/head.tmpl +++ b/templates/base/head.tmpl @@ -9,10 +9,6 @@ {{/* required by: 1. "redirect_to" cookie; 2. cross-origin protection */}} -{{if .GoGetImport}} - - -{{end}} {{if and .EnableFeed .FeedURL}} diff --git a/templates/repo/clone_buttons.tmpl b/templates/repo/clone_buttons.tmpl index 03b7a561daa..24024134f42 100644 --- a/templates/repo/clone_buttons.tmpl +++ b/templates/repo/clone_buttons.tmpl @@ -1,13 +1,16 @@ - -