]> source.dussan.org Git - gitea.git/commitdiff
modes/repo: incorrect SSH clone URL for #742
authorUnknwon <joe2010xtmf@163.com>
Sat, 13 Dec 2014 21:46:00 +0000 (16:46 -0500)
committerUnknwon <joe2010xtmf@163.com>
Sat, 13 Dec 2014 21:46:00 +0000 (16:46 -0500)
gogs.go
models/repo.go
modules/middleware/context.go
modules/middleware/repo.go
routers/api/v1/repo.go
templates/.VERSION

diff --git a/gogs.go b/gogs.go
index 88cc03a876398a0fa554b92eb747ec6685312876..4f57e82c313735f8db8769ee3ea92766c0692d84 100644 (file)
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
        "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())
index bf46696dfb9d6da6150d6c5d9ceca86ff0477004..3ea4efc7f07f284b2d7e92ddcddc908fbfe66eed 100644 (file)
@@ -241,6 +241,27 @@ func IsRepositoryExist(u *User, repoName string) (bool, error) {
        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"}
index fb33c48e0e9931dcc88c64588cbdb11d527172c9..fc7814401fe47f1d5305f8d9b8df4973efed5772 100644 (file)
@@ -39,29 +39,25 @@ type Context struct {
        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
        }
index 171619492571991873e9e533221dcc413b326ec9..d143d8a86b35aa3eb6be4312f0d4b928932b67eb 100644 (file)
@@ -386,12 +386,11 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler {
                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 {
index 6f237231643203328150d70185e1236b3a2ac1a5..fbf9c73ea70a2f6a9b81bbf05c2ddb1965c87557 100644 (file)
@@ -23,20 +23,19 @@ import (
 
 // 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,
        }
 }
index e5ab0b331ad6ee51dd88f792130a1ee44c202530..6c8af6290fac609f0dc7833f7db032e124fe3755 100644 (file)
@@ -1 +1 @@
-0.5.8.1212 Beta
\ No newline at end of file
+0.5.8.1213 Beta
\ No newline at end of file