Let package git depend on setting but not opposite (#15241)
* Let package git depend on setting but not opposite * private some package variables
This commit is contained in:
		
							parent
							
								
									e673e42f7e
								
							
						
					
					
						commit
						e3c626834b
					
				
					 17 changed files with 113 additions and 92 deletions
				
			
		|  | @ -26,6 +26,7 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
|  | 	gitea_git "code.gitea.io/gitea/modules/git" | ||||||
| 	"code.gitea.io/gitea/modules/markup" | 	"code.gitea.io/gitea/modules/markup" | ||||||
| 	"code.gitea.io/gitea/modules/markup/external" | 	"code.gitea.io/gitea/modules/markup/external" | ||||||
| 	"code.gitea.io/gitea/modules/setting" | 	"code.gitea.io/gitea/modules/setting" | ||||||
|  | @ -79,7 +80,7 @@ func runPR() { | ||||||
| 	setting.RunUser = curUser.Username | 	setting.RunUser = curUser.Username | ||||||
| 
 | 
 | ||||||
| 	log.Printf("[PR] Loading fixtures data ...\n") | 	log.Printf("[PR] Loading fixtures data ...\n") | ||||||
| 	setting.CheckLFSVersion() | 	gitea_git.CheckLFSVersion() | ||||||
| 	//models.LoadConfigs()
 | 	//models.LoadConfigs()
 | ||||||
| 	/* | 	/* | ||||||
| 		setting.Database.Type = "sqlite3" | 		setting.Database.Type = "sqlite3" | ||||||
|  |  | ||||||
|  | @ -143,7 +143,7 @@ func standardCommitAndPushTest(t *testing.T, dstPath string) (little, big string | ||||||
| func lfsCommitAndPushTest(t *testing.T, dstPath string) (littleLFS, bigLFS string) { | func lfsCommitAndPushTest(t *testing.T, dstPath string) (littleLFS, bigLFS string) { | ||||||
| 	t.Run("LFS", func(t *testing.T) { | 	t.Run("LFS", func(t *testing.T) { | ||||||
| 		defer PrintCurrentTest(t)() | 		defer PrintCurrentTest(t)() | ||||||
| 		setting.CheckLFSVersion() | 		git.CheckLFSVersion() | ||||||
| 		if !setting.LFS.StartServer { | 		if !setting.LFS.StartServer { | ||||||
| 			t.Skip() | 			t.Skip() | ||||||
| 			return | 			return | ||||||
|  | @ -213,7 +213,7 @@ func rawTest(t *testing.T, ctx *APITestContext, little, big, littleLFS, bigLFS s | ||||||
| 		resp := session.MakeRequestNilResponseRecorder(t, req, http.StatusOK) | 		resp := session.MakeRequestNilResponseRecorder(t, req, http.StatusOK) | ||||||
| 		assert.Equal(t, littleSize, resp.Length) | 		assert.Equal(t, littleSize, resp.Length) | ||||||
| 
 | 
 | ||||||
| 		setting.CheckLFSVersion() | 		git.CheckLFSVersion() | ||||||
| 		if setting.LFS.StartServer { | 		if setting.LFS.StartServer { | ||||||
| 			req = NewRequest(t, "GET", path.Join("/", username, reponame, "/raw/branch/master/", littleLFS)) | 			req = NewRequest(t, "GET", path.Join("/", username, reponame, "/raw/branch/master/", littleLFS)) | ||||||
| 			resp := session.MakeRequest(t, req, http.StatusOK) | 			resp := session.MakeRequest(t, req, http.StatusOK) | ||||||
|  | @ -255,7 +255,7 @@ func mediaTest(t *testing.T, ctx *APITestContext, little, big, littleLFS, bigLFS | ||||||
| 		resp := session.MakeRequestNilResponseRecorder(t, req, http.StatusOK) | 		resp := session.MakeRequestNilResponseRecorder(t, req, http.StatusOK) | ||||||
| 		assert.Equal(t, littleSize, resp.Length) | 		assert.Equal(t, littleSize, resp.Length) | ||||||
| 
 | 
 | ||||||
| 		setting.CheckLFSVersion() | 		git.CheckLFSVersion() | ||||||
| 		if setting.LFS.StartServer { | 		if setting.LFS.StartServer { | ||||||
| 			req = NewRequest(t, "GET", path.Join("/", username, reponame, "/media/branch/master/", littleLFS)) | 			req = NewRequest(t, "GET", path.Join("/", username, reponame, "/media/branch/master/", littleLFS)) | ||||||
| 			resp = session.MakeRequestNilResponseRecorder(t, req, http.StatusOK) | 			resp = session.MakeRequestNilResponseRecorder(t, req, http.StatusOK) | ||||||
|  |  | ||||||
|  | @ -26,6 +26,7 @@ import ( | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
| 	"code.gitea.io/gitea/modules/base" | 	"code.gitea.io/gitea/modules/base" | ||||||
|  | 	"code.gitea.io/gitea/modules/git" | ||||||
| 	"code.gitea.io/gitea/modules/graceful" | 	"code.gitea.io/gitea/modules/graceful" | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| 	"code.gitea.io/gitea/modules/queue" | 	"code.gitea.io/gitea/modules/queue" | ||||||
|  | @ -162,7 +163,7 @@ func initIntegrationTest() { | ||||||
| 	setting.SetCustomPathAndConf("", "", "") | 	setting.SetCustomPathAndConf("", "", "") | ||||||
| 	setting.NewContext() | 	setting.NewContext() | ||||||
| 	util.RemoveAll(models.LocalCopyPath()) | 	util.RemoveAll(models.LocalCopyPath()) | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	setting.InitDBConfig() | 	setting.InitDBConfig() | ||||||
| 	if err := storage.Init(); err != nil { | 	if err := storage.Init(); err != nil { | ||||||
| 		fmt.Printf("Init storage failed: %v", err) | 		fmt.Printf("Init storage failed: %v", err) | ||||||
|  |  | ||||||
|  | @ -13,6 +13,7 @@ import ( | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
|  | 	"code.gitea.io/gitea/modules/git" | ||||||
| 	"code.gitea.io/gitea/modules/lfs" | 	"code.gitea.io/gitea/modules/lfs" | ||||||
| 	"code.gitea.io/gitea/modules/setting" | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	"code.gitea.io/gitea/routers/web" | 	"code.gitea.io/gitea/routers/web" | ||||||
|  | @ -81,7 +82,7 @@ func checkResponseTestContentEncoding(t *testing.T, content *[]byte, resp *httpt | ||||||
| 
 | 
 | ||||||
| func TestGetLFSSmall(t *testing.T) { | func TestGetLFSSmall(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	if !setting.LFS.StartServer { | 	if !setting.LFS.StartServer { | ||||||
| 		t.Skip() | 		t.Skip() | ||||||
| 		return | 		return | ||||||
|  | @ -94,7 +95,7 @@ func TestGetLFSSmall(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| func TestGetLFSLarge(t *testing.T) { | func TestGetLFSLarge(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	if !setting.LFS.StartServer { | 	if !setting.LFS.StartServer { | ||||||
| 		t.Skip() | 		t.Skip() | ||||||
| 		return | 		return | ||||||
|  | @ -110,7 +111,7 @@ func TestGetLFSLarge(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| func TestGetLFSGzip(t *testing.T) { | func TestGetLFSGzip(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	if !setting.LFS.StartServer { | 	if !setting.LFS.StartServer { | ||||||
| 		t.Skip() | 		t.Skip() | ||||||
| 		return | 		return | ||||||
|  | @ -131,7 +132,7 @@ func TestGetLFSGzip(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| func TestGetLFSZip(t *testing.T) { | func TestGetLFSZip(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	if !setting.LFS.StartServer { | 	if !setting.LFS.StartServer { | ||||||
| 		t.Skip() | 		t.Skip() | ||||||
| 		return | 		return | ||||||
|  | @ -154,7 +155,7 @@ func TestGetLFSZip(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| func TestGetLFSRangeNo(t *testing.T) { | func TestGetLFSRangeNo(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	if !setting.LFS.StartServer { | 	if !setting.LFS.StartServer { | ||||||
| 		t.Skip() | 		t.Skip() | ||||||
| 		return | 		return | ||||||
|  | @ -167,7 +168,7 @@ func TestGetLFSRangeNo(t *testing.T) { | ||||||
| 
 | 
 | ||||||
| func TestGetLFSRange(t *testing.T) { | func TestGetLFSRange(t *testing.T) { | ||||||
| 	defer prepareTestEnv(t)() | 	defer prepareTestEnv(t)() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	if !setting.LFS.StartServer { | 	if !setting.LFS.StartServer { | ||||||
| 		t.Skip() | 		t.Skip() | ||||||
| 		return | 		return | ||||||
|  |  | ||||||
|  | @ -23,6 +23,7 @@ import ( | ||||||
| 	"code.gitea.io/gitea/models/migrations" | 	"code.gitea.io/gitea/models/migrations" | ||||||
| 	"code.gitea.io/gitea/modules/base" | 	"code.gitea.io/gitea/modules/base" | ||||||
| 	"code.gitea.io/gitea/modules/charset" | 	"code.gitea.io/gitea/modules/charset" | ||||||
|  | 	"code.gitea.io/gitea/modules/git" | ||||||
| 	"code.gitea.io/gitea/modules/setting" | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
| 
 | 
 | ||||||
|  | @ -61,7 +62,7 @@ func initMigrationTest(t *testing.T) func() { | ||||||
| 	assert.NoError(t, util.RemoveAll(setting.RepoRootPath)) | 	assert.NoError(t, util.RemoveAll(setting.RepoRootPath)) | ||||||
| 	assert.NoError(t, util.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath)) | 	assert.NoError(t, util.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath)) | ||||||
| 
 | 
 | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	setting.InitDBConfig() | 	setting.InitDBConfig() | ||||||
| 	setting.NewLogServices(true) | 	setting.NewLogServices(true) | ||||||
| 	return deferFn | 	return deferFn | ||||||
|  |  | ||||||
|  | @ -16,6 +16,7 @@ import ( | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/models" | 	"code.gitea.io/gitea/models" | ||||||
| 	"code.gitea.io/gitea/modules/base" | 	"code.gitea.io/gitea/modules/base" | ||||||
|  | 	"code.gitea.io/gitea/modules/git" | ||||||
| 	"code.gitea.io/gitea/modules/setting" | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	"code.gitea.io/gitea/modules/timeutil" | 	"code.gitea.io/gitea/modules/timeutil" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
|  | @ -55,7 +56,7 @@ func TestMain(m *testing.M) { | ||||||
| 
 | 
 | ||||||
| 	setting.SetCustomPathAndConf("", "", "") | 	setting.SetCustomPathAndConf("", "", "") | ||||||
| 	setting.NewContext() | 	setting.NewContext() | ||||||
| 	setting.CheckLFSVersion() | 	git.CheckLFSVersion() | ||||||
| 	setting.InitDBConfig() | 	setting.InitDBConfig() | ||||||
| 	setting.NewLogServices(true) | 	setting.NewLogServices(true) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -23,8 +23,8 @@ var ( | ||||||
| 	// GlobalCommandArgs global command args for external package setting
 | 	// GlobalCommandArgs global command args for external package setting
 | ||||||
| 	GlobalCommandArgs []string | 	GlobalCommandArgs []string | ||||||
| 
 | 
 | ||||||
| 	// DefaultCommandExecutionTimeout default command execution timeout duration
 | 	// defaultCommandExecutionTimeout default command execution timeout duration
 | ||||||
| 	DefaultCommandExecutionTimeout = 360 * time.Second | 	defaultCommandExecutionTimeout = 360 * time.Second | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // DefaultLocale is the default LC_ALL to run git commands in.
 | // DefaultLocale is the default LC_ALL to run git commands in.
 | ||||||
|  | @ -111,7 +111,7 @@ func (c *Command) RunInDirTimeoutEnvFullPipeline(env []string, timeout time.Dura | ||||||
| // it pipes stdout and stderr to given io.Writer and passes in an io.Reader as stdin. Between cmd.Start and cmd.Wait the passed in function is run.
 | // it pipes stdout and stderr to given io.Writer and passes in an io.Reader as stdin. Between cmd.Start and cmd.Wait the passed in function is run.
 | ||||||
| func (c *Command) RunInDirTimeoutEnvFullPipelineFunc(env []string, timeout time.Duration, dir string, stdout, stderr io.Writer, stdin io.Reader, fn func(context.Context, context.CancelFunc) error) error { | func (c *Command) RunInDirTimeoutEnvFullPipelineFunc(env []string, timeout time.Duration, dir string, stdout, stderr io.Writer, stdin io.Reader, fn func(context.Context, context.CancelFunc) error) error { | ||||||
| 	if timeout == -1 { | 	if timeout == -1 { | ||||||
| 		timeout = DefaultCommandExecutionTimeout | 		timeout = defaultCommandExecutionTimeout | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if len(dir) == 0 { | 	if len(dir) == 0 { | ||||||
|  |  | ||||||
|  | @ -14,6 +14,7 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/modules/process" | 	"code.gitea.io/gitea/modules/process" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 
 | 
 | ||||||
| 	"github.com/hashicorp/go-version" | 	"github.com/hashicorp/go-version" | ||||||
| ) | ) | ||||||
|  | @ -106,10 +107,42 @@ func SetExecutablePath(path string) error { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // VersionInfo returns git version information
 | ||||||
|  | func VersionInfo() string { | ||||||
|  | 	var format = "Git Version: %s" | ||||||
|  | 	var args = []interface{}{gitVersion.Original()} | ||||||
|  | 	// Since git wire protocol has been released from git v2.18
 | ||||||
|  | 	if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil { | ||||||
|  | 		format += ", Wire Protocol %s Enabled" | ||||||
|  | 		args = append(args, "Version 2") // for focus color
 | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return fmt.Sprintf(format, args...) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| // Init initializes git module
 | // Init initializes git module
 | ||||||
| func Init(ctx context.Context) error { | func Init(ctx context.Context) error { | ||||||
| 	DefaultContext = ctx | 	DefaultContext = ctx | ||||||
| 
 | 
 | ||||||
|  | 	defaultCommandExecutionTimeout = time.Duration(setting.Git.Timeout.Default) * time.Second | ||||||
|  | 
 | ||||||
|  | 	if err := SetExecutablePath(setting.Git.Path); err != nil { | ||||||
|  | 		return err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// force cleanup args
 | ||||||
|  | 	GlobalCommandArgs = []string{} | ||||||
|  | 
 | ||||||
|  | 	if CheckGitVersionAtLeast("2.9") == nil { | ||||||
|  | 		// Explicitly disable credential helper, otherwise Git credentials might leak
 | ||||||
|  | 		GlobalCommandArgs = append(GlobalCommandArgs, "-c", "credential.helper=") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	// Since git wire protocol has been released from git v2.18
 | ||||||
|  | 	if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil { | ||||||
|  | 		GlobalCommandArgs = append(GlobalCommandArgs, "-c", "protocol.version=2") | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	// Save current git version on init to gitVersion otherwise it would require an RWMutex
 | 	// Save current git version on init to gitVersion otherwise it would require an RWMutex
 | ||||||
| 	if err := LoadGitVersion(); err != nil { | 	if err := LoadGitVersion(); err != nil { | ||||||
| 		return err | 		return err | ||||||
|  |  | ||||||
							
								
								
									
										37
									
								
								modules/git/lfs.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								modules/git/lfs.go
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | ||||||
|  | // Copyright 2021 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 ( | ||||||
|  | 	"sync" | ||||||
|  | 
 | ||||||
|  | 	logger "code.gitea.io/gitea/modules/log" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var once sync.Once | ||||||
|  | 
 | ||||||
|  | // CheckLFSVersion will check lfs version, if not satisfied, then disable it.
 | ||||||
|  | func CheckLFSVersion() { | ||||||
|  | 	if setting.LFS.StartServer { | ||||||
|  | 		//Disable LFS client hooks if installed for the current OS user
 | ||||||
|  | 		//Needs at least git v2.1.2
 | ||||||
|  | 
 | ||||||
|  | 		err := LoadGitVersion() | ||||||
|  | 		if err != nil { | ||||||
|  | 			logger.Fatal("Error retrieving git version: %v", err) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		if CheckGitVersionAtLeast("2.1.2") != nil { | ||||||
|  | 			setting.LFS.StartServer = false | ||||||
|  | 			logger.Error("LFS server support needs at least Git v2.1.2") | ||||||
|  | 		} else { | ||||||
|  | 			once.Do(func() { | ||||||
|  | 				GlobalCommandArgs = append(GlobalCommandArgs, "-c", "filter.lfs.required=", | ||||||
|  | 					"-c", "filter.lfs.smudge=", "-c", "filter.lfs.clean=") | ||||||
|  | 			}) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | @ -12,6 +12,8 @@ import ( | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
|  | 
 | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // GetBranchCommitID returns last commit ID string of given branch.
 | // GetBranchCommitID returns last commit ID string of given branch.
 | ||||||
|  | @ -85,12 +87,6 @@ func (repo *Repository) GetCommitByPath(relpath string) (*Commit, error) { | ||||||
| 	return commits.Front().Value.(*Commit), nil | 	return commits.Front().Value.(*Commit), nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // CommitsRangeSize the default commits range size
 |  | ||||||
| var CommitsRangeSize = 50 |  | ||||||
| 
 |  | ||||||
| // BranchesRangeSize the default branches range size
 |  | ||||||
| var BranchesRangeSize = 20 |  | ||||||
| 
 |  | ||||||
| func (repo *Repository) commitsByRange(id SHA1, page, pageSize int) (*list.List, error) { | func (repo *Repository) commitsByRange(id SHA1, page, pageSize int) (*list.List, error) { | ||||||
| 	stdout, err := NewCommand("log", id.String(), "--skip="+strconv.Itoa((page-1)*pageSize), | 	stdout, err := NewCommand("log", id.String(), "--skip="+strconv.Itoa((page-1)*pageSize), | ||||||
| 		"--max-count="+strconv.Itoa(pageSize), prettyLogFormat).RunInDirBytes(repo.Path) | 		"--max-count="+strconv.Itoa(pageSize), prettyLogFormat).RunInDirBytes(repo.Path) | ||||||
|  | @ -206,7 +202,7 @@ func (repo *Repository) FileCommitsCount(revision, file string) (int64, error) { | ||||||
| 
 | 
 | ||||||
| // CommitsByFileAndRange return the commits according revison file and the page
 | // CommitsByFileAndRange return the commits according revison file and the page
 | ||||||
| func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (*list.List, error) { | func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (*list.List, error) { | ||||||
| 	skip := (page - 1) * CommitsRangeSize | 	skip := (page - 1) * setting.Git.CommitsRangeSize | ||||||
| 
 | 
 | ||||||
| 	stdoutReader, stdoutWriter := io.Pipe() | 	stdoutReader, stdoutWriter := io.Pipe() | ||||||
| 	defer func() { | 	defer func() { | ||||||
|  | @ -216,7 +212,7 @@ func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) ( | ||||||
| 	go func() { | 	go func() { | ||||||
| 		stderr := strings.Builder{} | 		stderr := strings.Builder{} | ||||||
| 		err := NewCommand("log", revision, "--follow", | 		err := NewCommand("log", revision, "--follow", | ||||||
| 			"--max-count="+strconv.Itoa(CommitsRangeSize*page), | 			"--max-count="+strconv.Itoa(setting.Git.CommitsRangeSize*page), | ||||||
| 			prettyLogFormat, "--", file). | 			prettyLogFormat, "--", file). | ||||||
| 			RunInDirPipeline(repo.Path, stdoutWriter, &stderr) | 			RunInDirPipeline(repo.Path, stdoutWriter, &stderr) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  | @ -247,7 +243,7 @@ func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) ( | ||||||
| // CommitsByFileAndRangeNoFollow return the commits according revison file and the page
 | // CommitsByFileAndRangeNoFollow return the commits according revison file and the page
 | ||||||
| func (repo *Repository) CommitsByFileAndRangeNoFollow(revision, file string, page int) (*list.List, error) { | func (repo *Repository) CommitsByFileAndRangeNoFollow(revision, file string, page int) (*list.List, error) { | ||||||
| 	stdout, err := NewCommand("log", revision, "--skip="+strconv.Itoa((page-1)*50), | 	stdout, err := NewCommand("log", revision, "--skip="+strconv.Itoa((page-1)*50), | ||||||
| 		"--max-count="+strconv.Itoa(CommitsRangeSize), prettyLogFormat, "--", file).RunInDirBytes(repo.Path) | 		"--max-count="+strconv.Itoa(setting.Git.CommitsRangeSize), prettyLogFormat, "--", file).RunInDirBytes(repo.Path) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -7,7 +7,6 @@ package setting | ||||||
| import ( | import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/modules/git" |  | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -19,8 +18,8 @@ var ( | ||||||
| 		MaxGitDiffLines           int | 		MaxGitDiffLines           int | ||||||
| 		MaxGitDiffLineCharacters  int | 		MaxGitDiffLineCharacters  int | ||||||
| 		MaxGitDiffFiles           int | 		MaxGitDiffFiles           int | ||||||
| 		CommitsRangeSize          int | 		CommitsRangeSize          int // CommitsRangeSize the default commits range size
 | ||||||
| 		BranchesRangeSize         int | 		BranchesRangeSize         int // BranchesRangeSize the default branches range size
 | ||||||
| 		VerbosePush               bool | 		VerbosePush               bool | ||||||
| 		VerbosePushDelay          time.Duration | 		VerbosePushDelay          time.Duration | ||||||
| 		GCArgs                    []string `ini:"GC_ARGS" delim:" "` | 		GCArgs                    []string `ini:"GC_ARGS" delim:" "` | ||||||
|  | @ -54,7 +53,7 @@ var ( | ||||||
| 			Pull    int | 			Pull    int | ||||||
| 			GC      int `ini:"GC"` | 			GC      int `ini:"GC"` | ||||||
| 		}{ | 		}{ | ||||||
| 			Default: int(git.DefaultCommandExecutionTimeout / time.Second), | 			Default: 360, | ||||||
| 			Migrate: 600, | 			Migrate: 600, | ||||||
| 			Mirror:  300, | 			Mirror:  300, | ||||||
| 			Clone:   300, | 			Clone:   300, | ||||||
|  | @ -68,35 +67,4 @@ func newGit() { | ||||||
| 	if err := Cfg.Section("git").MapTo(&Git); err != nil { | 	if err := Cfg.Section("git").MapTo(&Git); err != nil { | ||||||
| 		log.Fatal("Failed to map Git settings: %v", err) | 		log.Fatal("Failed to map Git settings: %v", err) | ||||||
| 	} | 	} | ||||||
| 	if err := git.SetExecutablePath(Git.Path); err != nil { |  | ||||||
| 		log.Fatal("Failed to initialize Git settings: %v", err) |  | ||||||
| 	} |  | ||||||
| 	git.DefaultCommandExecutionTimeout = time.Duration(Git.Timeout.Default) * time.Second |  | ||||||
| 
 |  | ||||||
| 	version, err := git.LocalVersion() |  | ||||||
| 	if err != nil { |  | ||||||
| 		log.Fatal("Error retrieving git version: %v", err) |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	// force cleanup args
 |  | ||||||
| 	git.GlobalCommandArgs = []string{} |  | ||||||
| 
 |  | ||||||
| 	if git.CheckGitVersionAtLeast("2.9") == nil { |  | ||||||
| 		// Explicitly disable credential helper, otherwise Git credentials might leak
 |  | ||||||
| 		git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "credential.helper=") |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	var format = "Git Version: %s" |  | ||||||
| 	var args = []interface{}{version.Original()} |  | ||||||
| 	// Since git wire protocol has been released from git v2.18
 |  | ||||||
| 	if Git.EnableAutoGitWireProtocol && git.CheckGitVersionAtLeast("2.18") == nil { |  | ||||||
| 		git.GlobalCommandArgs = append(git.GlobalCommandArgs, "-c", "protocol.version=2") |  | ||||||
| 		format += ", Wire Protocol %s Enabled" |  | ||||||
| 		args = append(args, "Version 2") // for focus color
 |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	git.CommitsRangeSize = Git.CommitsRangeSize |  | ||||||
| 	git.BranchesRangeSize = Git.BranchesRangeSize |  | ||||||
| 
 |  | ||||||
| 	log.Info(format, args...) |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -9,7 +9,6 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"code.gitea.io/gitea/modules/generate" | 	"code.gitea.io/gitea/modules/generate" | ||||||
| 	"code.gitea.io/gitea/modules/git" |  | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| 
 | 
 | ||||||
| 	ini "gopkg.in/ini.v1" | 	ini "gopkg.in/ini.v1" | ||||||
|  | @ -67,24 +66,3 @@ func newLFSService() { | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 |  | ||||||
| // 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
 |  | ||||||
| 
 |  | ||||||
| 		err := git.LoadGitVersion() |  | ||||||
| 		if err != nil { |  | ||||||
| 			log.Fatal("Error retrieving git version: %v", err) |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		if git.CheckGitVersionAtLeast("2.1.2") != nil { |  | ||||||
| 			LFS.StartServer = false |  | ||||||
| 			log.Error("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=") |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -143,8 +143,8 @@ func GetAllCommits(ctx *context.APIContext) { | ||||||
| 		listOptions.Page = 1 | 		listOptions.Page = 1 | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if listOptions.PageSize > git.CommitsRangeSize { | 	if listOptions.PageSize > setting.Git.CommitsRangeSize { | ||||||
| 		listOptions.PageSize = git.CommitsRangeSize | 		listOptions.PageSize = setting.Git.CommitsRangeSize | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	sha := ctx.Query("sha") | 	sha := ctx.Query("sha") | ||||||
|  |  | ||||||
|  | @ -69,7 +69,9 @@ func GlobalInit(ctx context.Context) { | ||||||
| 	if err := git.Init(ctx); err != nil { | 	if err := git.Init(ctx); err != nil { | ||||||
| 		log.Fatal("Git module init failed: %v", err) | 		log.Fatal("Git module init failed: %v", err) | ||||||
| 	} | 	} | ||||||
| 	setting.CheckLFSVersion() | 	log.Info(git.VersionInfo()) | ||||||
|  | 
 | ||||||
|  | 	git.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) | ||||||
| 	log.Trace("Custom path: %s", setting.CustomPath) | 	log.Trace("Custom path: %s", setting.CustomPath) | ||||||
|  |  | ||||||
|  | @ -18,6 +18,7 @@ import ( | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| 	"code.gitea.io/gitea/modules/repofiles" | 	"code.gitea.io/gitea/modules/repofiles" | ||||||
| 	repo_module "code.gitea.io/gitea/modules/repository" | 	repo_module "code.gitea.io/gitea/modules/repository" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
| 	"code.gitea.io/gitea/modules/web" | 	"code.gitea.io/gitea/modules/web" | ||||||
| 	"code.gitea.io/gitea/routers/utils" | 	"code.gitea.io/gitea/routers/utils" | ||||||
|  | @ -62,8 +63,8 @@ func Branches(ctx *context.Context) { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	limit := ctx.QueryInt("limit") | 	limit := ctx.QueryInt("limit") | ||||||
| 	if limit <= 0 || limit > git.BranchesRangeSize { | 	if limit <= 0 || limit > setting.Git.BranchesRangeSize { | ||||||
| 		limit = git.BranchesRangeSize | 		limit = setting.Git.BranchesRangeSize | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	skip := (page - 1) * limit | 	skip := (page - 1) * limit | ||||||
|  | @ -73,7 +74,7 @@ func Branches(ctx *context.Context) { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	ctx.Data["Branches"] = branches | 	ctx.Data["Branches"] = branches | ||||||
| 	pager := context.NewPagination(int(branchesCount), git.BranchesRangeSize, page, 5) | 	pager := context.NewPagination(int(branchesCount), setting.Git.BranchesRangeSize, page, 5) | ||||||
| 	pager.SetDefaultParams(ctx) | 	pager.SetDefaultParams(ctx) | ||||||
| 	ctx.Data["Page"] = pager | 	ctx.Data["Page"] = pager | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -63,7 +63,7 @@ func Commits(ctx *context.Context) { | ||||||
| 
 | 
 | ||||||
| 	pageSize := ctx.QueryInt("limit") | 	pageSize := ctx.QueryInt("limit") | ||||||
| 	if pageSize <= 0 { | 	if pageSize <= 0 { | ||||||
| 		pageSize = git.CommitsRangeSize | 		pageSize = setting.Git.CommitsRangeSize | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Both `git log branchName` and `git log commitId` work.
 | 	// Both `git log branchName` and `git log commitId` work.
 | ||||||
|  | @ -82,7 +82,7 @@ func Commits(ctx *context.Context) { | ||||||
| 	ctx.Data["CommitCount"] = commitsCount | 	ctx.Data["CommitCount"] = commitsCount | ||||||
| 	ctx.Data["Branch"] = ctx.Repo.BranchName | 	ctx.Data["Branch"] = ctx.Repo.BranchName | ||||||
| 
 | 
 | ||||||
| 	pager := context.NewPagination(int(commitsCount), git.CommitsRangeSize, page, 5) | 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | ||||||
| 	pager.SetDefaultParams(ctx) | 	pager.SetDefaultParams(ctx) | ||||||
| 	ctx.Data["Page"] = pager | 	ctx.Data["Page"] = pager | ||||||
| 
 | 
 | ||||||
|  | @ -250,7 +250,7 @@ func FileHistory(ctx *context.Context) { | ||||||
| 	ctx.Data["CommitCount"] = commitsCount | 	ctx.Data["CommitCount"] = commitsCount | ||||||
| 	ctx.Data["Branch"] = branchName | 	ctx.Data["Branch"] = branchName | ||||||
| 
 | 
 | ||||||
| 	pager := context.NewPagination(int(commitsCount), git.CommitsRangeSize, page, 5) | 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | ||||||
| 	pager.SetDefaultParams(ctx) | 	pager.SetDefaultParams(ctx) | ||||||
| 	ctx.Data["Page"] = pager | 	ctx.Data["Page"] = pager | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -21,6 +21,7 @@ import ( | ||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| 	"code.gitea.io/gitea/modules/markup" | 	"code.gitea.io/gitea/modules/markup" | ||||||
| 	"code.gitea.io/gitea/modules/markup/markdown" | 	"code.gitea.io/gitea/modules/markup/markdown" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	"code.gitea.io/gitea/modules/timeutil" | 	"code.gitea.io/gitea/modules/timeutil" | ||||||
| 	"code.gitea.io/gitea/modules/util" | 	"code.gitea.io/gitea/modules/util" | ||||||
| 	"code.gitea.io/gitea/modules/web" | 	"code.gitea.io/gitea/modules/web" | ||||||
|  | @ -316,7 +317,7 @@ func renderRevisionPage(ctx *context.Context) (*git.Repository, *git.TreeEntry) | ||||||
| 
 | 
 | ||||||
| 	ctx.Data["Commits"] = commitsHistory | 	ctx.Data["Commits"] = commitsHistory | ||||||
| 
 | 
 | ||||||
| 	pager := context.NewPagination(int(commitsCount), git.CommitsRangeSize, page, 5) | 	pager := context.NewPagination(int(commitsCount), setting.Git.CommitsRangeSize, page, 5) | ||||||
| 	pager.SetDefaultParams(ctx) | 	pager.SetDefaultParams(ctx) | ||||||
| 	ctx.Data["Page"] = pager | 	ctx.Data["Page"] = pager | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue