aboutsummaryrefslogtreecommitdiff
path: root/routers/repo/http.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-06-28 15:00:32 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-06-28 15:00:32 +0800
commita357cda9575b482004329e81f0add6e4c32ab02a (patch)
treedb7d7508a039cfd4dd6cedad236e720bcfe1396c /routers/repo/http.go
parent165e3e8f18bb7d38722d0c836ddbf8c95023cf67 (diff)
parent6e448b07145fbb090e0da6deb97f244c2bfd7ba7 (diff)
Merge branch 'dev' of github.com:gogits/gogs into dev
Diffstat (limited to 'routers/repo/http.go')
-rw-r--r--routers/repo/http.go51
1 files changed, 20 insertions, 31 deletions
diff --git a/routers/repo/http.go b/routers/repo/http.go
index c5856d60..7b89e9b0 100644
--- a/routers/repo/http.go
+++ b/routers/repo/http.go
@@ -7,9 +7,7 @@ package repo
import (
"bytes"
"fmt"
- "io"
"io/ioutil"
- "log"
"net/http"
"os"
"os/exec"
@@ -22,6 +20,7 @@ import (
"github.com/go-martini/martini"
"github.com/gogits/gogs/models"
+ "github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/middleware"
"github.com/gogits/gogs/modules/setting"
)
@@ -107,9 +106,9 @@ func Http(ctx *middleware.Context, params martini.Params) {
}
if !isPublicPull {
- var tp = models.AU_WRITABLE
+ var tp = models.WRITABLE
if isPull {
- tp = models.AU_READABLE
+ tp = models.READABLE
}
has, err := models.HasAccess(authUsername, username+"/"+reponame, tp)
@@ -117,8 +116,8 @@ func Http(ctx *middleware.Context, params martini.Params) {
ctx.Handle(401, "no basic auth and digit auth", nil)
return
} else if !has {
- if tp == models.AU_READABLE {
- has, err = models.HasAccess(authUsername, username+"/"+reponame, models.AU_WRITABLE)
+ if tp == models.READABLE {
+ has, err = models.HasAccess(authUsername, username+"/"+reponame, models.WRITABLE)
if err != nil || !has {
ctx.Handle(401, "no basic auth and digit auth", nil)
return
@@ -141,7 +140,10 @@ func Http(ctx *middleware.Context, params martini.Params) {
newCommitId := fields[1]
refName := fields[2]
- models.Update(refName, oldCommitId, newCommitId, authUsername, username, reponame, authUser.Id)
+ if err = models.Update(refName, oldCommitId, newCommitId, authUsername, username, reponame, authUser.Id); err != nil {
+ log.GitLogger.Error(err.Error())
+ return
+ }
}
}
}
@@ -190,7 +192,6 @@ var routes = []route{
// Request handling function
func HttpBackend(config *Config) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
- //log.Printf("%s %s %s %s", r.RemoteAddr, r.Method, r.URL.Path, r.Proto)
for _, route := range routes {
if m := route.cr.FindStringSubmatch(r.URL.Path); m != nil {
if route.method != r.Method {
@@ -202,7 +203,7 @@ func HttpBackend(config *Config) http.HandlerFunc {
dir, err := getGitDir(config, m[1])
if err != nil {
- log.Print(err)
+ log.GitLogger.Error(err.Error())
renderNotFound(w)
return
}
@@ -212,13 +213,13 @@ func HttpBackend(config *Config) http.HandlerFunc {
return
}
}
+
renderNotFound(w)
return
}
}
// Actual command handling functions
-
func serviceUploadPack(hr handler) {
serviceRpc("upload-pack", hr)
}
@@ -236,36 +237,24 @@ func serviceRpc(rpc string, hr handler) {
return
}
- input, _ := ioutil.ReadAll(r.Body)
-
w.Header().Set("Content-Type", fmt.Sprintf("application/x-git-%s-result", rpc))
w.WriteHeader(http.StatusOK)
+ input, _ := ioutil.ReadAll(r.Body)
+ br := bytes.NewReader(input)
+
args := []string{rpc, "--stateless-rpc", dir}
cmd := exec.Command(hr.Config.GitBinPath, args...)
cmd.Dir = dir
- in, err := cmd.StdinPipe()
- if err != nil {
- log.Print(err)
- return
- }
-
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- log.Print(err)
- return
- }
+ cmd.Stdout = w
+ cmd.Stdin = br
- err = cmd.Start()
+ err := cmd.Run()
if err != nil {
- log.Print(err)
+ log.GitLogger.Error(err.Error())
return
}
- in.Write(input)
- io.Copy(w, stdout)
- cmd.Wait()
-
if hr.Config.OnSucceed != nil {
hr.Config.OnSucceed(rpc, input)
}
@@ -345,7 +334,7 @@ func getGitDir(config *Config, fPath string) (string, error) {
cwd, err := os.Getwd()
if err != nil {
- log.Print(err)
+ log.GitLogger.Error(err.Error())
return "", err
}
@@ -422,7 +411,7 @@ func gitCommand(gitBinPath, dir string, args ...string) []byte {
out, err := command.Output()
if err != nil {
- log.Print(err)
+ log.GitLogger.Error(err.Error())
}
return out