aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--README_ZH.md2
-rw-r--r--gogs.go2
-rw-r--r--models/repo.go22
-rw-r--r--modules/avatar/avatar.go14
-rw-r--r--modules/avatar/avatar_test.go2
-rw-r--r--modules/base/conf.go2
-rw-r--r--update.go26
-rw-r--r--web.go4
9 files changed, 42 insertions, 34 deletions
diff --git a/README.md b/README.md
index c708bf55c8..b7396e5f47 100644
--- a/README.md
+++ b/README.md
@@ -30,7 +30,7 @@ More importantly, Gogs only needs one binary to setup your own project hosting o
- User profile page.
- Repository viewer.
- Gravatar and cache support.
-- Mail service(register).
+- Mail service(register, issue).
- Administration panel.
- Supports MySQL, PostgreSQL and SQLite3(binary release only).
diff --git a/README_ZH.md b/README_ZH.md
index ee9c3b7c42..9c9f4b3980 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -29,7 +29,7 @@ Gogs 完全使用 Go 语言来实现对 Git 数据的操作,实现 **零** 依
- 用户个人信息页面
- 仓库浏览器
- Gravatar 以及缓存支持
-- 邮件服务(注册)
+- 邮件服务(注册、Issue)
- 管理员面板
- 支持 MySQL、PostgreSQL 以及 SQLite3(仅限二进制版本)
diff --git a/gogs.go b/gogs.go
index d88a2bc6f4..ba443c6e65 100644
--- a/gogs.go
+++ b/gogs.go
@@ -19,7 +19,7 @@ import (
// Test that go1.2 tag above is included in builds. main.go refers to this definition.
const go12tag = true
-const APP_VER = "0.1.8.0326"
+const APP_VER = "0.1.8.0326 Alpha"
func init() {
base.AppVer = APP_VER
diff --git a/models/repo.go b/models/repo.go
index 477f9472b4..0ef049cc6e 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -235,6 +235,18 @@ func initRepoCommit(tmpPath string, sig *git.Signature) (err error) {
return nil
}
+func createHookUpdate(hookPath, content string) error {
+ pu, err := os.OpenFile(hookPath, os.O_CREATE|os.O_WRONLY, 0777)
+ if err != nil {
+ return err
+ }
+ defer pu.Close()
+ if _, err = pu.WriteString(content); err != nil {
+ return err
+ }
+ return nil
+}
+
// InitRepository initializes README and .gitignore if needed.
func initRepository(f string, user *User, repo *Repository, initReadme bool, repoLang, license string) error {
repoPath := RepoPath(user.Name, repo.Name)
@@ -245,13 +257,9 @@ func initRepository(f string, user *User, repo *Repository, initReadme bool, rep
}
// hook/post-update
- pu, err := os.OpenFile(filepath.Join(repoPath, "hooks", "update"), os.O_CREATE|os.O_WRONLY, 0777)
- if err != nil {
- return err
- }
- defer pu.Close()
- // TODO: Windows .bat
- if _, err = pu.WriteString(fmt.Sprintf("#!/usr/bin/env bash\n%s update $1 $2 $3\n", appPath)); err != nil {
+ if err := createHookUpdate(filepath.Join(repoPath, "hooks", "update"),
+ fmt.Sprintf("#!/usr/bin/env bash\n%s update $1 $2 $3\n",
+ strings.Replace(appPath, "\\", "/", -1))); err != nil {
return err
}
diff --git a/modules/avatar/avatar.go b/modules/avatar/avatar.go
index 449c9656dc..06e2c1385b 100644
--- a/modules/avatar/avatar.go
+++ b/modules/avatar/avatar.go
@@ -9,7 +9,7 @@ It is recommend to use this way
cacheDir := "./cache"
defaultImg := "./default.jpg"
- http.Handle("/avatar/", avatar.HttpHandler(cacheDir, defaultImg))
+ http.Handle("/avatar/", avatar.CacheServer(cacheDir, defaultImg))
*/
package avatar
@@ -135,12 +135,12 @@ func (this *Avatar) UpdateTimeout(timeout time.Duration) error {
return err
}
-type avatarHandler struct {
+type service struct {
cacheDir string
altImage string
}
-func (this *avatarHandler) mustInt(r *http.Request, defaultValue int, keys ...string) int {
+func (this *service) mustInt(r *http.Request, defaultValue int, keys ...string) int {
var v int
for _, k := range keys {
if _, err := fmt.Sscanf(r.FormValue(k), "%d", &v); err == nil {
@@ -150,7 +150,7 @@ func (this *avatarHandler) mustInt(r *http.Request, defaultValue int, keys ...st
return defaultValue
}
-func (this *avatarHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+func (this *service) ServeHTTP(w http.ResponseWriter, r *http.Request) {
urlPath := r.URL.Path
hash := urlPath[strings.LastIndex(urlPath, "/")+1:]
size := this.mustInt(r, 80, "s", "size") // default size = 80*80
@@ -183,9 +183,9 @@ func (this *avatarHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
}
-// http.Handle("/avatar/", avatar.HttpHandler("./cache"))
-func HttpHandler(cacheDir string, defaultImgPath string) http.Handler {
- return &avatarHandler{
+// http.Handle("/avatar/", avatar.CacheServer("./cache"))
+func CacheServer(cacheDir string, defaultImgPath string) http.Handler {
+ return &service{
cacheDir: cacheDir,
altImage: defaultImgPath,
}
diff --git a/modules/avatar/avatar_test.go b/modules/avatar/avatar_test.go
index 4656d6f0f4..0cbf70fe60 100644
--- a/modules/avatar/avatar_test.go
+++ b/modules/avatar/avatar_test.go
@@ -51,7 +51,7 @@ func TestFetchMany(t *testing.T) {
// wget http://www.artsjournal.com/artfulmanager/wp/wp-content/uploads/2013/12/200x200xmirror_cat.jpg.pagespeed.ic.GOZSv6v1_H.jpg -O default.jpg
/*
func TestHttp(t *testing.T) {
- http.Handle("/", avatar.HttpHandler("./", "default.jpg"))
+ http.Handle("/", avatar.CacheServer("./", "default.jpg"))
http.ListenAndServe(":8001", nil)
}
*/
diff --git a/modules/base/conf.go b/modules/base/conf.go
index 0fb1ccdcf6..2e56883937 100644
--- a/modules/base/conf.go
+++ b/modules/base/conf.go
@@ -80,7 +80,7 @@ func ExecDir() (string, error) {
if err != nil {
return "", err
}
- return path.Dir(p), nil
+ return path.Dir(strings.Replace(p, "\\", "/", -1)), nil
}
var logLevels = map[string]string{
diff --git a/update.go b/update.go
index 5c6d5b28ce..39729937e1 100644
--- a/update.go
+++ b/update.go
@@ -5,18 +5,18 @@
package main
import (
-"os"
-"os/exec"
-"strings"
-"strconv"
-"container/list"
-
-"github.com/codegangsta/cli"
-//"github.com/gogits/gogs/modules/log"
-"github.com/gogits/gogs/models"
-"github.com/gogits/gogs/modules/base"
-"github.com/qiniu/log"
-"github.com/gogits/git"
+ "container/list"
+ "os"
+ "os/exec"
+ "strconv"
+ "strings"
+
+ "github.com/codegangsta/cli"
+ //"github.com/gogits/gogs/modules/log"
+ "github.com/gogits/git"
+ "github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/base"
+ "github.com/qiniu/log"
)
var CmdUpdate = cli.Command{
@@ -103,7 +103,7 @@ func runUpdate(c *cli.Context) {
// if a new branch
if strings.HasPrefix(oldCommitId, "0000000") {
l, err = ref.AllCommits()
-
+
} else {
l = ref.CommitsBetween(newCommit, oldCommit)
}
diff --git a/web.go b/web.go
index 9b7b21639a..9423c3eecb 100644
--- a/web.go
+++ b/web.go
@@ -96,8 +96,8 @@ func runWeb(*cli.Context) {
m.Get("/stars", reqSignIn, user.Stars)
m.Get("/help", routers.Help)
- avatarCache := avatar.HttpHandler("public/img/avatar/", "public/img/avatar_default.jpg")
- m.Get("/avatar/:hash", avatarCache.ServeHTTP)
+ avt := avatar.CacheServer("public/img/avatar/", "public/img/avatar_default.jpg")
+ m.Get("/avatar/:hash", avt.ServeHTTP)
m.Group("/user", func(r martini.Router) {
r.Any("/login", binding.BindIgnErr(auth.LogInForm{}), user.SignIn)