forked from gitea/gitea
		
	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
					
				
							
								
								
									
										22
									
								
								cmd/serv.go
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								cmd/serv.go
									
									
									
									
									
								
							| @ -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 | ||||
|  | ||||
							
								
								
									
										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. | ||||
| 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) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Lauris BH
							Lauris BH