diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-12-13 16:46:00 -0500 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-12-13 16:46:00 -0500 |
commit | b553ea45ee29f5fc4f123c9f1083b90104ec4fe4 (patch) | |
tree | dc94dd0814d260e2f48560db2b9a091a9d3b33dd /models/repo.go | |
parent | ac4a10456ea4515091c3c90a83a82c1e59cdf428 (diff) |
modes/repo: incorrect SSH clone URL for #742
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/models/repo.go b/models/repo.go index bf46696d..3ea4efc7 100644 --- a/models/repo.go +++ b/models/repo.go @@ -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"} |