* only check and config git on web subcommand but not others * add Init in git teststags/v1.9.0-rc1
@@ -17,7 +17,6 @@ import ( | |||
"time" | |||
"code.gitea.io/gitea/models" | |||
"code.gitea.io/gitea/modules/git" | |||
"code.gitea.io/gitea/modules/log" | |||
"code.gitea.io/gitea/modules/pprof" | |||
"code.gitea.io/gitea/modules/private" | |||
@@ -25,7 +24,6 @@ import ( | |||
"github.com/Unknwon/com" | |||
"github.com/dgrijalva/jwt-go" | |||
version "github.com/mcuadros/go-version" | |||
"github.com/urfave/cli" | |||
) | |||
@@ -46,29 +44,9 @@ var CmdServ = cli.Command{ | |||
}, | |||
} | |||
func checkLFSVersion() { | |||
if setting.LFS.StartServer { | |||
//Disable LFS client hooks if installed for the current OS user | |||
//Needs at least git v2.1.2 | |||
binVersion, err := git.BinVersion() | |||
if err != nil { | |||
fail("LFS server error", "Error retrieving git version: %v", err) | |||
} | |||
if !version.Compare(binVersion, "2.1.2", ">=") { | |||
setting.LFS.StartServer = false | |||
println("LFS server support needs at least Git v2.1.2, disabled") | |||
} else { | |||
git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "filter.lfs.required=", | |||
"-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=") | |||
} | |||
} | |||
} | |||
func setup(logPath string) { | |||
_ = log.DelLogger("console") | |||
setting.NewContext() | |||
checkLFSVersion() | |||
} | |||
func parseCmd(cmd string) (string, string) { |
@@ -91,17 +91,20 @@ func init() { | |||
if version.Compare(gitVersion, GitVersionRequired, "<") { | |||
panic(fmt.Sprintf("Git version not supported. Requires version > %v", GitVersionRequired)) | |||
} | |||
} | |||
// Init initializes git module | |||
func Init() error { | |||
// Git requires setting user.name and user.email in order to commit changes. | |||
for configKey, defaultValue := range map[string]string{"user.name": "Gitea", "user.email": "gitea@fake.local"} { | |||
if stdout, stderr, err := process.GetManager().Exec("git.Init(get setting)", GitExecutable, "config", "--get", configKey); err != nil || strings.TrimSpace(stdout) == "" { | |||
// ExitError indicates this config is not set | |||
if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" { | |||
if _, stderr, gerr := process.GetManager().Exec("git.Init(set "+configKey+")", "git", "config", "--global", configKey, defaultValue); gerr != nil { | |||
panic(fmt.Sprintf("Failed to set git %s(%s): %s", configKey, gerr, stderr)) | |||
return fmt.Errorf("Failed to set git %s(%s): %s", configKey, gerr, stderr) | |||
} | |||
} else { | |||
panic(fmt.Sprintf("Failed to get git %s(%s): %s", configKey, err, stderr)) | |||
return fmt.Errorf("Failed to get git %s(%s): %s", configKey, err, stderr) | |||
} | |||
} | |||
} | |||
@@ -109,8 +112,9 @@ func init() { | |||
// Set git some configurations. | |||
if _, stderr, err := process.GetManager().Exec("git.Init(git config --global core.quotepath false)", | |||
GitExecutable, "config", "--global", "core.quotepath", "false"); err != nil { | |||
panic(fmt.Sprintf("Failed to execute 'git config --global core.quotepath false': %s", stderr)) | |||
return fmt.Errorf("Failed to execute 'git config --global core.quotepath false': %s", stderr) | |||
} | |||
return nil | |||
} | |||
// Fsck verifies the connectivity and validity of the objects in the database |
@@ -0,0 +1,25 @@ | |||
// Copyright 2019 The Gitea Authors. All rights reserved. | |||
// Use of this source code is governed by a MIT-style | |||
// license that can be found in the LICENSE file. | |||
package git | |||
import ( | |||
"fmt" | |||
"os" | |||
"testing" | |||
) | |||
func fatalTestError(fmtStr string, args ...interface{}) { | |||
fmt.Fprintf(os.Stderr, fmtStr, args...) | |||
os.Exit(1) | |||
} | |||
func TestMain(m *testing.M) { | |||
if err := Init(); err != nil { | |||
fatalTestError("Init failed: %v", err) | |||
} | |||
exitStatus := m.Run() | |||
os.Exit(exitStatus) | |||
} |
@@ -65,6 +65,9 @@ func initDBEngine() (err error) { | |||
// GlobalInit is for global configuration reload-able. | |||
func GlobalInit() { | |||
setting.NewContext() | |||
if err := git.Init(); err != nil { | |||
log.Fatal("Git module init failed: %v", err) | |||
} | |||
setting.CheckLFSVersion() | |||
log.Trace("AppPath: %s", setting.AppPath) | |||
log.Trace("AppWorkPath: %s", setting.AppWorkPath) |