@@ -257,6 +257,17 @@ func initRepository(f string, user *User, repo *Repository, initReadme bool, rep | |||||
return err | return err | ||||
} | } | ||||
// hook/post-update | |||||
pu2, err := os.OpenFile(filepath.Join(repoPath, "hooks", "post-receive"), os.O_CREATE|os.O_WRONLY, 0777) | |||||
if err != nil { | |||||
return err | |||||
} | |||||
defer pu2.Close() | |||||
// TODO: Windows .bat | |||||
if _, err = pu2.WriteString("#!/usr/bin/env bash\ngit update-server-info\n"); err != nil { | |||||
return err | |||||
} | |||||
// Initialize repository according to user's choice. | // Initialize repository according to user's choice. | ||||
fileName := map[string]string{} | fileName := map[string]string{} | ||||
if initReadme { | if initReadme { | ||||
@@ -231,10 +231,8 @@ func UserPath(userName string) string { | |||||
func GetUserByKeyId(keyId int64) (*User, error) { | func GetUserByKeyId(keyId int64) (*User, error) { | ||||
user := new(User) | user := new(User) | ||||
rawSql := "SELECT a.* FROM user AS a, public_key AS b WHERE a.id = b.owner_id AND b.id=?" | |||||
if base.Cfg.MustValue("database", "DB_TYPE") == "postgres" { | |||||
rawSql = "SELECT a.* FROM \"user\" AS a, public_key AS b WHERE a.id = b.owner_id AND b.id=?" | |||||
} | |||||
rawSql := "SELECT a.* FROM `user` AS a, public_key AS b WHERE a.id = b.owner_id AND b.id=?" | |||||
has, err := orm.Sql(rawSql, keyId).Get(user) | has, err := orm.Sql(rawSql, keyId).Get(user) | ||||
if err != nil { | if err != nil { | ||||
return nil, err | return nil, err | ||||
@@ -5,11 +5,13 @@ | |||||
package repo | package repo | ||||
import ( | import ( | ||||
"path" | |||||
"strings" | "strings" | ||||
"github.com/codegangsta/martini" | "github.com/codegangsta/martini" | ||||
"github.com/gogits/git" | "github.com/gogits/git" | ||||
"github.com/gogits/webdav" | |||||
"github.com/gogits/gogs/models" | "github.com/gogits/gogs/models" | ||||
"github.com/gogits/gogs/modules/base" | "github.com/gogits/gogs/modules/base" | ||||
@@ -181,6 +183,29 @@ func Single(ctx *middleware.Context, params martini.Params) { | |||||
ctx.HTML(200, "repo/single", ctx.Data) | ctx.HTML(200, "repo/single", ctx.Data) | ||||
} | } | ||||
func Http(ctx *middleware.Context, params martini.Params) { | |||||
/*if !ctx.Repo.IsValid { | |||||
return | |||||
}*/ | |||||
// TODO: access check | |||||
username := params["username"] | |||||
reponame := params["reponame"] | |||||
if strings.HasSuffix(reponame, ".git") { | |||||
reponame = reponame[:len(reponame)-4] | |||||
} | |||||
prefix := path.Join("/", username, params["reponame"]) | |||||
server := &webdav.Server{ | |||||
Fs: webdav.Dir(models.RepoPath(username, reponame)), | |||||
TrimPrefix: prefix, | |||||
Listings: true, | |||||
} | |||||
server.ServeHTTP(ctx.ResponseWriter, ctx.Req) | |||||
} | |||||
func Setting(ctx *middleware.Context, params martini.Params) { | func Setting(ctx *middleware.Context, params martini.Params) { | ||||
if !ctx.Repo.IsOwner { | if !ctx.Repo.IsOwner { | ||||
ctx.Error(404) | ctx.Error(404) | ||||
@@ -116,6 +116,8 @@ func runWeb(*cli.Context) { | |||||
m.Get("/:username/:reponame", ignSignIn, middleware.RepoAssignment(true), repo.Single) | m.Get("/:username/:reponame", ignSignIn, middleware.RepoAssignment(true), repo.Single) | ||||
m.Any("/:username/:reponame/**", ignSignIn, repo.Http) | |||||
if martini.Env == martini.Dev { | if martini.Env == martini.Dev { | ||||
m.Get("/template/**", dev.TemplatePreview) | m.Get("/template/**", dev.TemplatePreview) | ||||
} | } | ||||