| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | // Copyright 2022 The Gogs Authors. All rights reserved.// Use of this source code is governed by a MIT-style// license that can be found in the LICENSE file.package repoutilimport (	"fmt"	"path/filepath"	"strconv"	"strings"	"gogs.io/gogs/internal/conf")// CloneLink represents different types of clone URLs of repository.type CloneLink struct {	SSH   string	HTTPS string}// NewCloneLink returns clone URLs using given owner and repository name.func NewCloneLink(owner, repo string, isWiki bool) *CloneLink {	if isWiki {		repo += ".wiki"	}	cl := new(CloneLink)	if conf.SSH.Port != 22 {		cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", conf.App.RunUser, conf.SSH.Domain, conf.SSH.Port, owner, repo)	} else {		cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", conf.App.RunUser, conf.SSH.Domain, owner, repo)	}	cl.HTTPS = HTTPSCloneURL(owner, repo)	return cl}// HTTPSCloneURL returns HTTPS clone URL using given owner and repository name.func HTTPSCloneURL(owner, repo string) string {	return fmt.Sprintf("%s%s/%s.git", conf.Server.ExternalURL, owner, repo)}// HTMLURL returns HTML URL using given owner and repository name.func HTMLURL(owner, repo string) string {	return conf.Server.ExternalURL + owner + "/" + repo}// CompareCommitsPath returns the comparison path using given owner, repository,// and commit IDs.func CompareCommitsPath(owner, repo, oldCommitID, newCommitID string) string {	return fmt.Sprintf("%s/%s/compare/%s...%s", owner, repo, oldCommitID, newCommitID)}// UserPath returns the absolute path for storing user repositories.func UserPath(user string) string {	return filepath.Join(conf.Repository.Root, strings.ToLower(user))}// RepositoryPath returns the absolute path using given user and repository// name.func RepositoryPath(owner, repo string) string {	return filepath.Join(UserPath(owner), strings.ToLower(repo)+".git")}// RepositoryLocalPath returns the absolute path of the repository local copy// with the given ID.func RepositoryLocalPath(repoID int64) string {	return filepath.Join(conf.Server.AppDataPath, "tmp", "local-repo", strconv.FormatInt(repoID, 10))}// RepositoryLocalWikiPath returns the absolute path of the repository local// wiki copy with the given ID.func RepositoryLocalWikiPath(repoID int64) string {	return filepath.Join(conf.Server.AppDataPath, "tmp", "local-wiki", strconv.FormatInt(repoID, 10))}
 |