diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2022-05-09 00:46:32 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-08 18:46:32 +0200 |
commit | 4ca1d7547a2c32cc65ca23d1a7698d1a8c921d65 (patch) | |
tree | fee132403adea441987ce25809c764e00fd962cd /models | |
parent | d4834071da9ce010fd4677ef339c598dd23dc130 (diff) | |
download | gitea-4ca1d7547a2c32cc65ca23d1a7698d1a8c921d65.tar.gz gitea-4ca1d7547a2c32cc65ca23d1a7698d1a8c921d65.zip |
Move some helper files out of models (#19355)
* Move some helper files out of models
* Some improvements
Co-authored-by: delvh <dev.lh@web.de>
Diffstat (limited to 'models')
-rw-r--r-- | models/helper.go | 17 | ||||
-rw-r--r-- | models/helper_directory.go | 47 | ||||
-rw-r--r-- | models/helper_environment.go | 79 | ||||
-rw-r--r-- | models/repo.go | 15 | ||||
-rw-r--r-- | models/repo_list.go | 9 |
5 files changed, 13 insertions, 154 deletions
diff --git a/models/helper.go b/models/helper.go deleted file mode 100644 index c5f2d7a5b8..0000000000 --- a/models/helper.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2017 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 models - -import ( - repo_model "code.gitea.io/gitea/models/repo" -) - -func valuesRepository(m map[int64]*repo_model.Repository) []*repo_model.Repository { - values := make([]*repo_model.Repository, 0, len(m)) - for _, v := range m { - values = append(values, v) - } - return values -} diff --git a/models/helper_directory.go b/models/helper_directory.go deleted file mode 100644 index 10114959ef..0000000000 --- a/models/helper_directory.go +++ /dev/null @@ -1,47 +0,0 @@ -// 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 models - -import ( - "fmt" - "os" - "path" - "path/filepath" - - "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/util" -) - -// LocalCopyPath returns the local repository temporary copy path. -func LocalCopyPath() string { - if filepath.IsAbs(setting.Repository.Local.LocalCopyPath) { - return setting.Repository.Local.LocalCopyPath - } - return path.Join(setting.AppDataPath, setting.Repository.Local.LocalCopyPath) -} - -// CreateTemporaryPath creates a temporary path -func CreateTemporaryPath(prefix string) (string, error) { - if err := os.MkdirAll(LocalCopyPath(), os.ModePerm); err != nil { - log.Error("Unable to create localcopypath directory: %s (%v)", LocalCopyPath(), err) - return "", fmt.Errorf("Failed to create localcopypath directory %s: %v", LocalCopyPath(), err) - } - basePath, err := os.MkdirTemp(LocalCopyPath(), prefix+".git") - if err != nil { - log.Error("Unable to create temporary directory: %s-*.git (%v)", prefix, err) - return "", fmt.Errorf("Failed to create dir %s-*.git: %v", prefix, err) - - } - return basePath, nil -} - -// RemoveTemporaryPath removes the temporary path -func RemoveTemporaryPath(basePath string) error { - if _, err := os.Stat(basePath); !os.IsNotExist(err) { - return util.RemoveAll(basePath) - } - return nil -} diff --git a/models/helper_environment.go b/models/helper_environment.go deleted file mode 100644 index 4cad1e5368..0000000000 --- a/models/helper_environment.go +++ /dev/null @@ -1,79 +0,0 @@ -// 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 models - -import ( - "fmt" - "os" - "strings" - - repo_model "code.gitea.io/gitea/models/repo" - user_model "code.gitea.io/gitea/models/user" - "code.gitea.io/gitea/modules/setting" -) - -// env keys for git hooks need -const ( - EnvRepoName = "GITEA_REPO_NAME" - EnvRepoUsername = "GITEA_REPO_USER_NAME" - EnvRepoID = "GITEA_REPO_ID" - EnvRepoIsWiki = "GITEA_REPO_IS_WIKI" - EnvPusherName = "GITEA_PUSHER_NAME" - EnvPusherEmail = "GITEA_PUSHER_EMAIL" - EnvPusherID = "GITEA_PUSHER_ID" - EnvKeyID = "GITEA_KEY_ID" // public key ID - EnvDeployKeyID = "GITEA_DEPLOY_KEY_ID" - EnvPRID = "GITEA_PR_ID" - EnvIsInternal = "GITEA_INTERNAL_PUSH" - EnvAppURL = "GITEA_ROOT_URL" -) - -// InternalPushingEnvironment returns an os environment to switch off hooks on push -// It is recommended to avoid using this unless you are pushing within a transaction -// or if you absolutely are sure that post-receive and pre-receive will do nothing -// We provide the full pushing-environment for other hook providers -func InternalPushingEnvironment(doer *user_model.User, repo *repo_model.Repository) []string { - return append(PushingEnvironment(doer, repo), - EnvIsInternal+"=true", - ) -} - -// PushingEnvironment returns an os environment to allow hooks to work on push -func PushingEnvironment(doer *user_model.User, repo *repo_model.Repository) []string { - return FullPushingEnvironment(doer, doer, repo, repo.Name, 0) -} - -// FullPushingEnvironment returns an os environment to allow hooks to work on push -func FullPushingEnvironment(author, committer *user_model.User, repo *repo_model.Repository, repoName string, prID int64) []string { - isWiki := "false" - if strings.HasSuffix(repoName, ".wiki") { - isWiki = "true" - } - - authorSig := author.NewGitSig() - committerSig := committer.NewGitSig() - - environ := append(os.Environ(), - "GIT_AUTHOR_NAME="+authorSig.Name, - "GIT_AUTHOR_EMAIL="+authorSig.Email, - "GIT_COMMITTER_NAME="+committerSig.Name, - "GIT_COMMITTER_EMAIL="+committerSig.Email, - EnvRepoName+"="+repoName, - EnvRepoUsername+"="+repo.OwnerName, - EnvRepoIsWiki+"="+isWiki, - EnvPusherName+"="+committer.Name, - EnvPusherID+"="+fmt.Sprintf("%d", committer.ID), - EnvRepoID+"="+fmt.Sprintf("%d", repo.ID), - EnvPRID+"="+fmt.Sprintf("%d", prID), - EnvAppURL+"="+setting.AppURL, - "SSH_ORIGINAL_COMMAND=gitea-internal", - ) - - if !committer.KeepEmailPrivate { - environ = append(environ, EnvPusherEmail+"="+committer.Email) - } - - return environ -} diff --git a/models/repo.go b/models/repo.go index e20bf90d97..fb7bbba1e1 100644 --- a/models/repo.go +++ b/models/repo.go @@ -43,9 +43,6 @@ var ItemsPerPage = 40 // NewRepoContext creates a new repository context func NewRepoContext() { unit.LoadUnitConfig() - - admin_model.RemoveAllWithNotice(db.DefaultContext, "Clean up temporary repository uploads", setting.Repository.Upload.TempPath) - admin_model.RemoveAllWithNotice(db.DefaultContext, "Clean up temporary repositories", LocalCopyPath()) } // CheckRepoUnitUser check whether user could visit the unit of this repository @@ -527,7 +524,8 @@ func DecrementRepoForkNum(ctx context.Context, repoID int64) error { return err } -func updateRepository(ctx context.Context, repo *repo_model.Repository, visibilityChanged bool) (err error) { +// UpdateRepositoryCtx updates a repository with db context +func UpdateRepositoryCtx(ctx context.Context, repo *repo_model.Repository, visibilityChanged bool) (err error) { repo.LowerName = strings.ToLower(repo.Name) if utf8.RuneCountInString(repo.Description) > 255 { @@ -579,7 +577,7 @@ func updateRepository(ctx context.Context, repo *repo_model.Repository, visibili } for i := range forkRepos { forkRepos[i].IsPrivate = repo.IsPrivate || repo.Owner.Visibility == api.VisibleTypePrivate - if err = updateRepository(ctx, forkRepos[i], true); err != nil { + if err = UpdateRepositoryCtx(ctx, forkRepos[i], true); err != nil { return fmt.Errorf("updateRepository[%d]: %v", forkRepos[i].ID, err) } } @@ -588,11 +586,6 @@ func updateRepository(ctx context.Context, repo *repo_model.Repository, visibili return nil } -// UpdateRepositoryCtx updates a repository with db context -func UpdateRepositoryCtx(ctx context.Context, repo *repo_model.Repository, visibilityChanged bool) error { - return updateRepository(ctx, repo, visibilityChanged) -} - // UpdateRepository updates a repository func UpdateRepository(repo *repo_model.Repository, visibilityChanged bool) (err error) { ctx, committer, err := db.TxContext() @@ -601,7 +594,7 @@ func UpdateRepository(repo *repo_model.Repository, visibilityChanged bool) (err } defer committer.Close() - if err = updateRepository(ctx, repo, visibilityChanged); err != nil { + if err = UpdateRepositoryCtx(ctx, repo, visibilityChanged); err != nil { return fmt.Errorf("updateRepository: %v", err) } diff --git a/models/repo_list.go b/models/repo_list.go index 2c6be0a576..35b2ab5bf8 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -42,6 +42,15 @@ func (repos RepositoryList) Swap(i, j int) { repos[i], repos[j] = repos[j], repos[i] } +// FIXME: Remove in favor of maps.values when MIN_GO_VERSION >= 1.18 +func valuesRepository(m map[int64]*repo_model.Repository) []*repo_model.Repository { + values := make([]*repo_model.Repository, 0, len(m)) + for _, v := range m { + values = append(values, v) + } + return values +} + // RepositoryListOfMap make list from values of map func RepositoryListOfMap(repoMap map[int64]*repo_model.Repository) RepositoryList { return RepositoryList(valuesRepository(repoMap)) |