Only check and config git on web subcommand but not others (#7236)
* only check and config git on web subcommand but not others * add Init in git tests
This commit is contained in:
parent
a71cabbd53
commit
8ec659722d
4 changed files with 35 additions and 25 deletions
22
cmd/serv.go
22
cmd/serv.go
|
@ -17,7 +17,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
"code.gitea.io/gitea/modules/git"
|
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/pprof"
|
"code.gitea.io/gitea/modules/pprof"
|
||||||
"code.gitea.io/gitea/modules/private"
|
"code.gitea.io/gitea/modules/private"
|
||||||
|
@ -25,7 +24,6 @@ import (
|
||||||
|
|
||||||
"github.com/Unknwon/com"
|
"github.com/Unknwon/com"
|
||||||
"github.com/dgrijalva/jwt-go"
|
"github.com/dgrijalva/jwt-go"
|
||||||
version "github.com/mcuadros/go-version"
|
|
||||||
"github.com/urfave/cli"
|
"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) {
|
func setup(logPath string) {
|
||||||
_ = log.DelLogger("console")
|
_ = log.DelLogger("console")
|
||||||
setting.NewContext()
|
setting.NewContext()
|
||||||
checkLFSVersion()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseCmd(cmd string) (string, string) {
|
func parseCmd(cmd string) (string, string) {
|
||||||
|
|
|
@ -91,17 +91,20 @@ func init() {
|
||||||
if version.Compare(gitVersion, GitVersionRequired, "<") {
|
if version.Compare(gitVersion, GitVersionRequired, "<") {
|
||||||
panic(fmt.Sprintf("Git version not supported. Requires version > %v", 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.
|
// 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"} {
|
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) == "" {
|
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
|
// ExitError indicates this config is not set
|
||||||
if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" {
|
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 {
|
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 {
|
} 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.
|
// Set git some configurations.
|
||||||
if _, stderr, err := process.GetManager().Exec("git.Init(git config --global core.quotepath false)",
|
if _, stderr, err := process.GetManager().Exec("git.Init(git config --global core.quotepath false)",
|
||||||
GitExecutable, "config", "--global", "core.quotepath", "false"); err != nil {
|
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
|
// Fsck verifies the connectivity and validity of the objects in the database
|
||||||
|
|
25
modules/git/git_test.go
Normal file
25
modules/git/git_test.go
Normal file
|
@ -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.
|
// GlobalInit is for global configuration reload-able.
|
||||||
func GlobalInit() {
|
func GlobalInit() {
|
||||||
setting.NewContext()
|
setting.NewContext()
|
||||||
|
if err := git.Init(); err != nil {
|
||||||
|
log.Fatal("Git module init failed: %v", err)
|
||||||
|
}
|
||||||
setting.CheckLFSVersion()
|
setting.CheckLFSVersion()
|
||||||
log.Trace("AppPath: %s", setting.AppPath)
|
log.Trace("AppPath: %s", setting.AppPath)
|
||||||
log.Trace("AppWorkPath: %s", setting.AppWorkPath)
|
log.Trace("AppWorkPath: %s", setting.AppWorkPath)
|
||||||
|
|
Reference in a new issue