"github.com/gogits/gogs/modules/setting"
)
-const APP_VER = "0.5.8.1212 Beta"
+const APP_VER = "0.5.8.1213 Beta"
func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
return com.IsDir(RepoPath(u.Name, repoName)), nil
}
+// CloneLink represents different types of clone URLs of repository.
+type CloneLink struct {
+ SSH string
+ HTTPS string
+ Git string
+}
+
+// CloneLink returns clone URLs of repository.
+func (repo *Repository) CloneLink() (cl CloneLink, err error) {
+ if err = repo.GetOwner(); err != nil {
+ return cl, err
+ }
+ if setting.SshPort != 22 {
+ cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", setting.RunUser, setting.Domain, setting.SshPort, repo.Owner.LowerName, repo.LowerName)
+ } else {
+ cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.Domain, repo.Owner.LowerName, repo.LowerName)
+ }
+ cl.HTTPS = fmt.Sprintf("%s%s/%s.git", setting.AppUrl, repo.Owner.LowerName, repo.LowerName)
+ return cl, nil
+}
+
var (
illegalEquals = []string{"debug", "raw", "install", "api", "avatar", "user", "org", "help", "stars", "issues", "pulls", "commits", "repo", "template", "admin", "new"}
illegalSuffixs = []string{".git", ".keys"}
IsBasicAuth bool
Repo struct {
- IsOwner bool
- IsTrueOwner bool
- IsWatching bool
- IsBranch bool
- IsTag bool
- IsCommit bool
- IsAdmin bool // Current user is admin level.
- HasAccess bool
- Repository *models.Repository
- Owner *models.User
- Commit *git.Commit
- Tag *git.Tag
- GitRepo *git.Repository
- BranchName string
- TagName string
- TreeName string
- CommitId string
- RepoLink string
- CloneLink struct {
- SSH string
- HTTPS string
- Git string
- }
+ IsOwner bool
+ IsTrueOwner bool
+ IsWatching bool
+ IsBranch bool
+ IsTag bool
+ IsCommit bool
+ IsAdmin bool // Current user is admin level.
+ HasAccess bool
+ Repository *models.Repository
+ Owner *models.User
+ Commit *git.Commit
+ Tag *git.Tag
+ GitRepo *git.Repository
+ BranchName string
+ TagName string
+ TreeName string
+ CommitId string
+ RepoLink string
+ CloneLink models.CloneLink
CommitsCount int
Mirror *models.Mirror
}
ctx.Data["IsRepositoryOwner"] = ctx.Repo.IsOwner
ctx.Data["IsRepositoryTrueOwner"] = ctx.Repo.IsTrueOwner
- if setting.SshPort != 22 {
- ctx.Repo.CloneLink.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", setting.RunUser, setting.Domain, setting.SshPort, u.LowerName, repo.LowerName)
- } else {
- ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.Domain, u.LowerName, repo.LowerName)
+ ctx.Repo.CloneLink, err = repo.CloneLink()
+ if err != nil {
+ ctx.Handle(500, "CloneLink", err)
+ return
}
- ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s%s/%s.git", setting.AppUrl, u.LowerName, repo.LowerName)
ctx.Data["CloneLink"] = ctx.Repo.CloneLink
if ctx.Repo.Repository.IsGoget {
// ToApiRepository converts repository to API format.
func ToApiRepository(owner *models.User, repo *models.Repository, permission api.Permission) *api.Repository {
- sshUrlFmt := "%s@%s:%s/%s.git"
- if setting.SshPort != 22 {
- sshUrlFmt = "ssh://%s@%s:%d/%s/%s.git"
+ cl, err := repo.CloneLink()
+ if err != nil {
+ log.Error(4, "CloneLink: %v", err)
}
- htmlUrl := setting.AppUrl + owner.Name + "/" + repo.Name
return &api.Repository{
Id: repo.Id,
Owner: *ToApiUser(owner),
FullName: owner.Name + "/" + repo.Name,
Private: repo.IsPrivate,
Fork: repo.IsFork,
- HtmlUrl: htmlUrl,
- SshUrl: fmt.Sprintf(sshUrlFmt, setting.RunUser, setting.Domain, owner.LowerName, repo.LowerName),
- CloneUrl: htmlUrl + ".git",
+ HtmlUrl: setting.AppUrl + owner.Name + "/" + repo.Name,
+ CloneUrl: cl.HTTPS,
+ SshUrl: cl.SSH,
Permissions: permission,
}
}
-0.5.8.1212 Beta
\ No newline at end of file
+0.5.8.1213 Beta
\ No newline at end of file