From 197c4d4a5ba8a9540c49879324194f5f6be4689c Mon Sep 17 00:00:00 2001
From: Unknown <joe2010xtmf@163.com>
Date: Tue, 25 Mar 2014 08:53:11 -0400
Subject: [PATCH] Fix wrong serve command log location and commit repo action

---
 models/action.go           | 6 ++++--
 modules/base/conf.go       | 4 ++--
 modules/middleware/repo.go | 2 +-
 serve.go                   | 6 ++++--
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/models/action.go b/models/action.go
index 44d7aea8ca..dffc0e537e 100644
--- a/models/action.go
+++ b/models/action.go
@@ -59,7 +59,7 @@ func (a Action) GetContent() string {
 // CommitRepoAction records action for commit repository.
 func CommitRepoAction(userId int64, userName string,
 	repoId int64, repoName string, refName string, commits *base.PushCommits) error {
-	log.Trace("action.CommitRepoAction: %d/%s", userId, repoName)
+	log.Trace("action.CommitRepoAction(start): %d/%s", userId, repoName)
 
 	bs, err := json.Marshal(commits)
 	if err != nil {
@@ -92,8 +92,8 @@ func CommitRepoAction(userId int64, userName string,
 		})
 		if err != nil {
 			log.Error("action.CommitRepoAction(notify watches): %d/%s", userId, repoName)
+			return err
 		}
-		return err
 	}
 
 	// Update repository last update time.
@@ -107,6 +107,8 @@ func CommitRepoAction(userId int64, userName string,
 		log.Error("action.CommitRepoAction(UpdateRepository): %d/%s", userId, repoName)
 		return err
 	}
+
+	log.Trace("action.CommitRepoAction(end): %d/%s", userId, repoName)
 	return nil
 }
 
diff --git a/modules/base/conf.go b/modules/base/conf.go
index 1661681e7e..0fb1ccdcf6 100644
--- a/modules/base/conf.go
+++ b/modules/base/conf.go
@@ -71,7 +71,7 @@ var Service struct {
 	ResetPwdCodeLives      int
 }
 
-func exeDir() (string, error) {
+func ExecDir() (string, error) {
 	file, err := exec.LookPath(os.Args[0])
 	if err != nil {
 		return "", err
@@ -244,7 +244,7 @@ func newNotifyMailService() {
 
 func NewConfigContext() {
 	//var err error
-	workDir, err := exeDir()
+	workDir, err := ExecDir()
 	if err != nil {
 		fmt.Printf("Fail to get work directory: %s\n", err)
 		os.Exit(2)
diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index eea2570ca6..b23bccb104 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -73,7 +73,7 @@ func RepoAssignment(redirect bool) martini.Handler {
 		if base.EnableHttpsClone {
 			scheme = "https"
 		}
-		ctx.Repo.CloneLink.SSH = fmt.Sprintf("git@%s:%s/%s.git", base.Domain, user.LowerName, repo.LowerName)
+		ctx.Repo.CloneLink.SSH = fmt.Sprintf("%s@%s:%s/%s.git", base.RunUser, base.Domain, user.LowerName, repo.LowerName)
 		ctx.Repo.CloneLink.HTTPS = fmt.Sprintf("%s://%s/%s/%s.git", scheme, base.Domain, user.LowerName, repo.LowerName)
 
 		ctx.Data["IsRepositoryValid"] = true
diff --git a/serve.go b/serve.go
index 89ef0d848f..7e21fcae3a 100644
--- a/serve.go
+++ b/serve.go
@@ -45,10 +45,10 @@ gogs serv provide access auth for repositories`,
 	Flags:  []cli.Flag{},
 }
 
-func init() {
+func newLogger(execDir string) {
 	level := "0"
 	os.MkdirAll("log", os.ModePerm)
-	log.NewLogger(10000, "file", fmt.Sprintf(`{"level":%s,"filename":"%s"}`, level, "log/serv.log"))
+	log.NewLogger(10000, "file", fmt.Sprintf(`{"level":%s,"filename":"%s"}`, level, execDir+"/log/serv.log"))
 	log.Trace("start logging...")
 }
 
@@ -73,6 +73,8 @@ func In(b string, sl map[string]int) bool {
 }
 
 func runServ(k *cli.Context) {
+	execDir, _ := base.ExecDir()
+	newLogger(execDir)
 	log.Trace("new serv request " + log.Mode + ":" + log.Config)
 
 	base.NewConfigContext()