aboutsummaryrefslogtreecommitdiff
path: root/serve.go
diff options
context:
space:
mode:
Diffstat (limited to 'serve.go')
-rw-r--r--serve.go153
1 files changed, 11 insertions, 142 deletions
diff --git a/serve.go b/serve.go
index 25a34efb..96f03e72 100644
--- a/serve.go
+++ b/serve.go
@@ -5,21 +5,18 @@
package main
import (
- "bytes"
- "container/list"
+ //"container/list"
"fmt"
- "io"
"os"
"os/exec"
"path"
"strconv"
"strings"
- "time"
"github.com/codegangsta/cli"
"github.com/gogits/gogs/modules/log"
- "github.com/gogits/git"
+ //"github.com/gogits/git"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
)
@@ -125,11 +122,11 @@ func runServ(k *cli.Context) {
isWrite := In(verb, COMMANDS_WRITE)
isRead := In(verb, COMMANDS_READONLY)
- repo, err := models.GetRepositoryByName(user.Id, repoName)
- var isExist bool = true
+ /*//repo, err := models.GetRepositoryByName(user.Id, repoName)
+ //var isExist bool = true
if err != nil {
if err == models.ErrRepoNotExist {
- isExist = false
+ //isExist = false
if isRead {
println("Repository", user.Name+"/"+repoName, "is not exist")
log.Error("Repository " + user.Name + "/" + repoName + " is not exist")
@@ -140,7 +137,7 @@ func runServ(k *cli.Context) {
log.Error("Get repository error: " + err.Error())
return
}
- }
+ }*/
// access check
switch {
@@ -182,41 +179,14 @@ func runServ(k *cli.Context) {
return
}
- var rep *git.Repository
- repoPath := models.RepoPath(user.Name, repoName)
- if !isExist {
- if isWrite {
- _, err = models.CreateRepository(user, repoName, "", "", "", false, true)
- if err != nil {
- println("Create repository failed")
- log.Error("Create repository failed: " + err.Error())
- return
- }
- }
- }
-
- rep, err = git.OpenRepository(repoPath)
- if err != nil {
- println("OpenRepository failed:", err.Error())
- log.Error("OpenRepository failed: " + err.Error())
- return
- }
-
- refs, err := rep.AllReferencesMap()
- if err != nil {
- println("Get All References failed:", err.Error())
- log.Error("Get All References failed: " + err.Error())
- return
- }
+ // for update use
+ os.Setenv("userName", user.Name)
+ os.Setenv("userId", strconv.Itoa(int(user.Id)))
+ os.Setenv("repoName", repoName)
gitcmd := exec.Command(verb, rRepo)
gitcmd.Dir = base.RepoRootPath
-
- var s string
- b := bytes.NewBufferString(s)
-
- gitcmd.Stdout = io.MultiWriter(os.Stdout, b)
- //gitcmd.Stdin = io.MultiReader(os.Stdin, b)
+ gitcmd.Stdout = os.Stdout
gitcmd.Stdin = os.Stdin
gitcmd.Stderr = os.Stderr
@@ -225,105 +195,4 @@ func runServ(k *cli.Context) {
log.Error("execute command error: " + err.Error())
return
}
-
- if isRead {
- return
- }
-
- time.Sleep(time.Second)
-
- // find push reference name
- var t = "ok refs/heads/"
- var i int
- var refname string
- for {
- l, err := b.ReadString('\n')
- if err != nil {
- break
- }
- i = i + 1
- l = l[:len(l)-1]
- idx := strings.Index(l, t)
- if idx > 0 {
- refname = l[idx+len(t):]
- }
- }
- if refname == "" {
- println("Not found any reference name:", b.String())
- log.Error("Not found any reference name: " + b.String())
- return
- }
-
- var ref *git.Reference
- var ok bool
- var l *list.List
- //log.Info("----", refname, "-----")
- if ref, ok = refs[refname]; !ok {
- // for new branch
- refs, err = rep.AllReferencesMap()
- if err != nil {
- println("Get All References failed:", err.Error())
- log.Error("Get All References failed: " + err.Error())
- return
- }
- if ref, ok = refs[refname]; !ok {
- log.Error("unknow reference name -", refname, "-", b.String())
- return
- }
- l, err = ref.AllCommits()
- if err != nil {
- println("Get All Commits failed:", err.Error())
- log.Error("Get All Commits failed: " + err.Error())
- return
- }
- } else {
- //log.Info("----", ref, "-----")
- var last *git.Commit
- //log.Info("00000", ref.Oid.String())
- last, err = ref.LastCommit()
- if err != nil {
- println("Get last commit failed:", err.Error())
- log.Error("Get last commit failed: " + err.Error())
- return
- }
-
- ref2, err := rep.LookupReference(ref.Name)
- if err != nil {
- println("look up reference failed:", err.Error())
- log.Error("look up reference failed: " + err.Error())
- return
- }
-
- //log.Info("11111", ref2.Oid.String())
- before, err := ref2.LastCommit()
- if err != nil {
- println("Get last commit failed:", err.Error())
- log.Error("Get last commit failed: " + err.Error())
- return
- }
- //log.Info("----", before.Id(), "-----", last.Id())
- l = ref.CommitsBetween(before, last)
- }
-
- commits := make([][]string, 0)
- var maxCommits = 3
- for e := l.Front(); e != nil; e = e.Next() {
- commit := e.Value.(*git.Commit)
- commits = append(commits, []string{commit.Id().String(), commit.Message()})
- if len(commits) >= maxCommits {
- break
- }
- }
-
- if err = models.CommitRepoAction(user.Id, user.Name,
- repo.Id, repoName, refname, &base.PushCommits{l.Len(), commits}); err != nil {
- log.Error("runUpdate.models.CommitRepoAction: %v", err, commits)
- } else {
- c := exec.Command("git", "update-server-info")
- c.Dir = repoPath
- err := c.Run()
- if err != nil {
- log.Error("update-server-info: %v", err)
- }
- }
}