Skip to content

Commit

Permalink
Only check and config git on web subcommand but not others (#7236)
Browse files Browse the repository at this point in the history
* only check and config git on web subcommand but not others

* add Init in git tests
  • Loading branch information
lunny authored and lafriks committed Jun 19, 2019
1 parent a71cabb commit 8ec6597
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 25 deletions.
22 changes: 0 additions & 22 deletions cmd/serv.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,13 @@ 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"
"code.gitea.io/gitea/modules/setting"

"github.com/Unknwon/com"
"github.com/dgrijalva/jwt-go"
version "github.com/mcuadros/go-version"
"github.com/urfave/cli"
)

Expand All @@ -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) {
Expand Down
10 changes: 7 additions & 3 deletions modules/git/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,26 +91,30 @@ 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)
}
}
}

// 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
Expand Down
25 changes: 25 additions & 0 deletions modules/git/git_test.go
Original file line number Diff line number Diff line change
@@ -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)
}
3 changes: 3 additions & 0 deletions routers/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 8ec6597

Please sign in to comment.