]> source.dussan.org Git - gitea.git/commitdiff
fix lfs version check warning log when using ssh protocol (#5501)
authorLunny Xiao <xiaolunwen@gmail.com>
Wed, 19 Dec 2018 01:17:43 +0000 (09:17 +0800)
committerGitHub <noreply@github.com>
Wed, 19 Dec 2018 01:17:43 +0000 (09:17 +0800)
cmd/hook.go
cmd/serv.go
integrations/integration_test.go
modules/setting/setting.go
routers/init.go

index 63cb60592988215c0a60f90479de12ec40e3ba90..bde449ccdcb2a66158b4d38afee827f1939e0337 100644 (file)
@@ -10,7 +10,6 @@ import (
        "fmt"
        "net/url"
        "os"
-       "path/filepath"
        "strconv"
        "strings"
 
@@ -63,11 +62,6 @@ var (
        }
 )
 
-func hookSetup(logPath string) {
-       setting.NewContext()
-       log.NewGitLogger(filepath.Join(setting.LogRootPath, logPath))
-}
-
 func runHookPreReceive(c *cli.Context) error {
        if len(os.Getenv("SSH_ORIGINAL_COMMAND")) == 0 {
                return nil
@@ -79,7 +73,7 @@ func runHookPreReceive(c *cli.Context) error {
                setting.CustomConf = c.GlobalString("config")
        }
 
-       hookSetup("hooks/pre-receive.log")
+       setup("hooks/pre-receive.log")
 
        // the environment setted on serv command
        repoID, _ := strconv.ParseInt(os.Getenv(models.ProtectedBranchRepoID), 10, 64)
@@ -155,7 +149,7 @@ func runHookUpdate(c *cli.Context) error {
                setting.CustomConf = c.GlobalString("config")
        }
 
-       hookSetup("hooks/update.log")
+       setup("hooks/update.log")
 
        return nil
 }
@@ -171,7 +165,7 @@ func runHookPostReceive(c *cli.Context) error {
                setting.CustomConf = c.GlobalString("config")
        }
 
-       hookSetup("hooks/post-receive.log")
+       setup("hooks/post-receive.log")
 
        // the environment setted on serv command
        repoID, _ := strconv.ParseInt(os.Getenv(models.ProtectedBranchRepoID), 10, 64)
index c98228745d0bb665153da85d36759c63ae0ad15e..ec2258412f79a53d2ccc45afa7b65050a638dd53 100644 (file)
@@ -14,6 +14,7 @@ import (
        "strings"
        "time"
 
+       "code.gitea.io/git"
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/pprof"
@@ -22,6 +23,7 @@ import (
 
        "github.com/Unknwon/com"
        "github.com/dgrijalva/jwt-go"
+       version "github.com/mcuadros/go-version"
        "github.com/urfave/cli"
 )
 
@@ -48,8 +50,28 @@ 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(fmt.Sprintf("Error retrieving git version: %v", err), fmt.Sprintf("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) {
        setting.NewContext()
+       checkLFSVersion()
        log.NewGitLogger(filepath.Join(setting.LogRootPath, logPath))
 }
 
index 25f6cff27c65ca1747ce815111b021f9e215a092..ba3c7e3071315f334ae660573c752a61a1261dd5 100644 (file)
@@ -99,6 +99,7 @@ func initIntegrationTest() {
        }
 
        setting.NewContext()
+       setting.CheckLFSVersion()
        models.LoadConfigs()
 
        switch {
index c10f165c8ef6009a5db86491651cc0f9e9da5c6a..23304453d26ebf7677e4573ba0bafe0972e94e65 100644 (file)
@@ -693,6 +693,27 @@ func createPIDFile(pidPath string) {
        }
 }
 
+// CheckLFSVersion will check lfs version, if not satisfied, then disable it.
+func CheckLFSVersion() {
+       if 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 {
+                       log.Fatal(4, "Error retrieving git version: %v", err)
+               }
+
+               if !version.Compare(binVersion, "2.1.2", ">=") {
+                       LFS.StartServer = false
+                       log.Error(4, "LFS server support needs at least Git v2.1.2")
+               } else {
+                       git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "filter.lfs.required=",
+                               "-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=")
+               }
+       }
+}
+
 // NewContext initializes configuration context.
 // NOTE: do not print any log except error.
 func NewContext() {
@@ -888,7 +909,6 @@ func NewContext() {
        LFS.HTTPAuthExpiry = sec.Key("LFS_HTTP_AUTH_EXPIRY").MustDuration(20 * time.Minute)
 
        if LFS.StartServer {
-
                if err := os.MkdirAll(LFS.ContentPath, 0700); err != nil {
                        log.Fatal(4, "Failed to create '%s': %v", LFS.ContentPath, err)
                }
@@ -922,26 +942,6 @@ func NewContext() {
                                return
                        }
                }
-
-               //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 {
-                       log.Fatal(4, "Error retrieving git version: %v", err)
-               }
-
-               if !version.Compare(binVersion, "2.1.2", ">=") {
-
-                       LFS.StartServer = false
-                       log.Error(4, "LFS server support needs at least Git v2.1.2")
-
-               } else {
-
-                       git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "filter.lfs.required=",
-                               "-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=")
-
-               }
        }
 
        sec = Cfg.Section("security")
index a52f9ca1b42e22b715264e82aa67c7c1d96c85d0..3152988ba4432fabfb6aa7f958363faec52bdb1a 100644 (file)
@@ -45,6 +45,7 @@ func NewServices() {
 // GlobalInit is for global configuration reload-able.
 func GlobalInit() {
        setting.NewContext()
+       setting.CheckLFSVersion()
        log.Trace("AppPath: %s", setting.AppPath)
        log.Trace("AppWorkPath: %s", setting.AppWorkPath)
        log.Trace("Custom path: %s", setting.CustomPath)