aboutsummaryrefslogtreecommitdiff
path: root/models/repo.go
diff options
context:
space:
mode:
authorUnknwon <joe2010xtmf@163.com>2014-12-13 16:46:00 -0500
committerUnknwon <joe2010xtmf@163.com>2014-12-13 16:46:00 -0500
commitb553ea45ee29f5fc4f123c9f1083b90104ec4fe4 (patch)
treedc94dd0814d260e2f48560db2b9a091a9d3b33dd /models/repo.go
parentac4a10456ea4515091c3c90a83a82c1e59cdf428 (diff)
modes/repo: incorrect SSH clone URL for #742
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go21
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"}