forked from NYANDEV/forgejo
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