summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknwon <joe2010xtmf@163.com>2014-09-22 17:01:19 -0400
committerUnknwon <joe2010xtmf@163.com>2014-09-22 17:01:19 -0400
commit3f707b3f3265c4b3e64e47ee172cc878f3325248 (patch)
tree254264c45395a6c908e249c94e02efa0860c6d79
parent063aacd436da24c2616d68a838959300978afaa5 (diff)
downloadgitea-3f707b3f3265c4b3e64e47ee172cc878f3325248.tar.gz
gitea-3f707b3f3265c4b3e64e47ee172cc878f3325248.zip
Add basic submodule support
-rw-r--r--README.md2
-rw-r--r--README_ZH.md2
-rw-r--r--gogs.go2
-rw-r--r--modules/git/submodule.go52
-rw-r--r--routers/repo/view.go16
-rw-r--r--templates/.VERSION2
6 files changed, 57 insertions, 19 deletions
diff --git a/README.md b/README.md
index 232aa92a84..a2aed3afad 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@ Gogs(Go Git Service) is a painless self-hosted Git Service written in Go.
![Demo](https://gowalker.org/public/gogs_demo.gif)
-##### Current version: 0.5.3 Beta
+##### Current version: 0.5.4 Beta
### NOTICES
diff --git a/README_ZH.md b/README_ZH.md
index fcc8b49694..817110b375 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个基于 Go 语言的自助 Git 服务。
![Demo](https://gowalker.org/public/gogs_demo.gif)
-##### 当前版本:0.5.3 Beta
+##### 当前版本:0.5.4 Beta
## 开发目的
diff --git a/gogs.go b/gogs.go
index b1b9fe60d5..d565d7bbb1 100644
--- a/gogs.go
+++ b/gogs.go
@@ -17,7 +17,7 @@ import (
"github.com/gogits/gogs/modules/setting"
)
-const APP_VER = "0.5.3.0922 Beta"
+const APP_VER = "0.5.4.0922 Beta"
func init() {
runtime.GOMAXPROCS(runtime.NumCPU())
diff --git a/modules/git/submodule.go b/modules/git/submodule.go
index 28b5b9f375..6927f8cbad 100644
--- a/modules/git/submodule.go
+++ b/modules/git/submodule.go
@@ -1,6 +1,58 @@
+// Copyright 2014 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 git
+import (
+ "strings"
+)
+
type SubModule struct {
Name string
Url string
}
+
+// SubModuleFile represents a file with submodule type.
+type SubModuleFile struct {
+ *Commit
+
+ refUrl string
+ refId string
+}
+
+func NewSubModuleFile(c *Commit, refUrl, refId string) *SubModuleFile {
+ return &SubModuleFile{
+ Commit: c,
+ refUrl: refUrl,
+ refId: refId,
+ }
+}
+
+// RefUrl guesses and returns reference URL.
+func (sf *SubModuleFile) RefUrl() string {
+ url := strings.TrimSuffix(sf.refUrl, ".git")
+
+ // git://xxx/user/repo
+ if strings.HasPrefix(url, "git://") {
+ return "http://" + strings.TrimPrefix(url, "git://")
+ }
+
+ // http[s]://xxx/user/repo
+ if strings.HasPrefix(url, "http://") || strings.HasPrefix(url, "https://") {
+ return url
+ }
+
+ // sysuser@xxx:user/repo
+ i := strings.Index(url, "@")
+ j := strings.LastIndex(url, ":")
+ if i > -1 && j > -1 {
+ return "http://" + url[i+1:j] + "/" + url[j+1:]
+ }
+ return url
+}
+
+// RefId returns reference ID.
+func (sf *SubModuleFile) RefId() string {
+ return sf.refId
+}
diff --git a/routers/repo/view.go b/routers/repo/view.go
index 77f17e7ae0..4e4a7b18ce 100644
--- a/routers/repo/view.go
+++ b/routers/repo/view.go
@@ -21,13 +21,6 @@ const (
HOME base.TplName = "repo/home"
)
-type fakeCommit struct {
- *git.Commit
-
- RefUrl string
- RefId string
-}
-
func Home(ctx *middleware.Context) {
ctx.Data["Title"] = ctx.Repo.Repository.Name
@@ -153,14 +146,7 @@ func Home(ctx *middleware.Context) {
ctx.Handle(404, "GetCommitOfRelPath", err)
return
}
-
- commit := fakeCommit{
- Commit: c,
- RefUrl: strings.TrimRight(sm.Url, ".git"),
- RefId: te.Id.String(),
- }
-
- files = append(files, []interface{}{te, &commit})
+ files = append(files, []interface{}{te, git.NewSubModuleFile(c, sm.Url, te.Id.String())})
}
}
diff --git a/templates/.VERSION b/templates/.VERSION
index 19d8171e8f..8a713df042 100644
--- a/templates/.VERSION
+++ b/templates/.VERSION
@@ -1 +1 @@
-0.5.3.0922 Beta \ No newline at end of file
+0.5.4.0922 Beta \ No newline at end of file