Skip to content

Commit 178da31

Browse files
committed
Add configuration to allow customize global temp path
1 parent d41d8b8 commit 178da31

File tree

20 files changed

+84
-86
lines changed

20 files changed

+84
-86
lines changed

cmd/dump.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ var CmdDump = &cli.Command{
4949
&cli.StringFlag{
5050
Name: "tempdir",
5151
Aliases: []string{"t"},
52-
Value: setting.TempDir(),
52+
Value: setting.TempPath,
5353
Usage: "Temporary dir path",
5454
},
5555
&cli.StringFlag{

custom/conf/app.example.ini

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ RUN_USER = ; git
5353
;; The working directory, see the comment of AppWorkPath above
5454
;WORK_PATH =
5555

56+
;; The temporary directory, defaults to a directory named gitea under the system temporary directory
57+
;TEMP_PATH =
58+
5659
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5760
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5861
[server]

models/migrations/base/tests.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"code.gitea.io/gitea/models/unittest"
1616
"code.gitea.io/gitea/modules/git"
1717
"code.gitea.io/gitea/modules/setting"
18+
"code.gitea.io/gitea/modules/temp"
1819
"code.gitea.io/gitea/modules/test"
1920
"code.gitea.io/gitea/modules/testlogger"
2021

@@ -114,7 +115,7 @@ func MainTest(m *testing.M) {
114115
setting.CustomConf = giteaConf
115116
}
116117

117-
tmpDataPath, err := os.MkdirTemp(setting.TempDir(), "data")
118+
tmpDataPath, _, err := temp.MkdirTemp("data")
118119
if err != nil {
119120
testlogger.Fatalf("Unable to create temporary data path %v\n", err)
120121
}

models/unittest/testdb.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"code.gitea.io/gitea/modules/setting"
2121
"code.gitea.io/gitea/modules/setting/config"
2222
"code.gitea.io/gitea/modules/storage"
23+
"code.gitea.io/gitea/modules/temp"
2324
"code.gitea.io/gitea/modules/test"
2425
"code.gitea.io/gitea/modules/util"
2526

@@ -92,12 +93,12 @@ func MainTest(m *testing.M, testOptsArg ...*TestOptions) {
9293
setting.SSH.Domain = "try.gitea.io"
9394
setting.Database.Type = "sqlite3"
9495
setting.Repository.DefaultBranch = "master" // many test code still assume that default branch is called "master"
95-
repoRootPath, err := os.MkdirTemp(setting.TempDir(), "repos")
96+
repoRootPath, _, err := temp.MkdirTemp("repos")
9697
if err != nil {
9798
fatalTestError("TempDir: %v\n", err)
9899
}
99100
setting.RepoRootPath = repoRootPath
100-
appDataPath, err := os.MkdirTemp(setting.TempDir(), "appdata")
101+
appDataPath, _, err := temp.MkdirTemp("appdata")
101102
if err != nil {
102103
fatalTestError("TempDir: %v\n", err)
103104
}

modules/git/blame.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"os"
1212

1313
"code.gitea.io/gitea/modules/log"
14-
"code.gitea.io/gitea/modules/setting"
14+
"code.gitea.io/gitea/modules/temp"
1515
"code.gitea.io/gitea/modules/util"
1616
)
1717

@@ -193,7 +193,7 @@ func tryCreateBlameIgnoreRevsFile(commit *Commit) *string {
193193
}
194194
defer r.Close()
195195

196-
f, err := os.CreateTemp(setting.TempDir(), "gitea_git-blame-ignore-revs")
196+
f, err := temp.CreateTemp("gitea_git-blame-ignore-revs")
197197
if err != nil {
198198
return nil
199199
}

modules/git/git_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@ import (
1010
"testing"
1111

1212
"code.gitea.io/gitea/modules/setting"
13-
"code.gitea.io/gitea/modules/util"
13+
"code.gitea.io/gitea/modules/temp"
1414

1515
"github.com/hashicorp/go-version"
1616
"github.com/stretchr/testify/assert"
1717
)
1818

1919
func testRun(m *testing.M) error {
20-
gitHomePath, err := os.MkdirTemp(setting.TempDir(), "git-home")
20+
gitHomePath, cleanup, err := temp.MkdirTemp("git-home")
2121
if err != nil {
2222
return fmt.Errorf("unable to create temp dir: %w", err)
2323
}
24-
defer util.RemoveAll(gitHomePath)
24+
defer cleanup()
25+
2526
setting.Git.HomePath = gitHomePath
2627

2728
if err = InitFull(context.Background()); err != nil {

modules/git/repo.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ import (
1818
"time"
1919

2020
"code.gitea.io/gitea/modules/proxy"
21-
"code.gitea.io/gitea/modules/setting"
22-
"code.gitea.io/gitea/modules/util"
21+
"code.gitea.io/gitea/modules/temp"
2322
)
2423

2524
// GPGSettings represents the default GPG settings for this repository
@@ -268,13 +267,11 @@ func GetDivergingCommits(ctx context.Context, repoPath, baseBranch, targetBranch
268267

269268
// CreateBundle create bundle content to the target path
270269
func (repo *Repository) CreateBundle(ctx context.Context, commit string, out io.Writer) error {
271-
tmp, err := os.MkdirTemp(setting.TempDir(), "gitea-bundle")
270+
tmp, cleanup, err := temp.MkdirTemp("gitea-bundle")
272271
if err != nil {
273272
return err
274273
}
275-
defer func() {
276-
_ = util.RemoveAll(tmp)
277-
}()
274+
defer cleanup()
278275

279276
env := append(os.Environ(), "GIT_OBJECT_DIRECTORY="+filepath.Join(repo.Path, "objects"))
280277
_, _, err = NewCommand("init", "--bare").RunStdString(ctx, &RunOpts{Dir: tmp, Env: env})

modules/git/repo_index.go

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ import (
1010
"path/filepath"
1111
"strings"
1212

13-
"code.gitea.io/gitea/modules/log"
14-
"code.gitea.io/gitea/modules/setting"
15-
"code.gitea.io/gitea/modules/util"
13+
"code.gitea.io/gitea/modules/temp"
1614
)
1715

1816
// ReadTreeToIndex reads a treeish to the index
@@ -60,26 +58,18 @@ func (repo *Repository) ReadTreeToTemporaryIndex(treeish string) (tmpIndexFilena
6058
}
6159
}()
6260

63-
removeDirFn := func(dir string) func() { // it can't use the return value "tmpDir" directly because it is empty when error occurs
64-
return func() {
65-
if err := util.RemoveAll(dir); err != nil {
66-
log.Error("failed to remove tmp index dir: %v", err)
67-
}
68-
}
69-
}
70-
71-
tmpDir, err = os.MkdirTemp(setting.TempDir(), "index")
61+
tmpDir, cancel, err = temp.MkdirTemp("index")
7262
if err != nil {
7363
return "", "", nil, err
7464
}
7565

7666
tmpIndexFilename = filepath.Join(tmpDir, ".tmp-index")
77-
cancel = removeDirFn(tmpDir)
67+
7868
err = repo.ReadTreeToIndex(treeish, tmpIndexFilename)
7969
if err != nil {
8070
return "", "", cancel, err
8171
}
82-
return tmpIndexFilename, tmpDir, cancel, err
72+
return tmpIndexFilename, tmpDir, cancel, nil
8373
}
8474

8575
// EmptyIndex empties the index

modules/markup/external/external.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"code.gitea.io/gitea/modules/markup"
1717
"code.gitea.io/gitea/modules/process"
1818
"code.gitea.io/gitea/modules/setting"
19+
"code.gitea.io/gitea/modules/temp"
1920
"code.gitea.io/gitea/modules/util"
2021
)
2122

@@ -88,7 +89,7 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
8889

8990
if p.IsInputFile {
9091
// write to temp file
91-
f, err := os.CreateTemp(setting.TempDir(), "gitea_input")
92+
f, err := temp.CreateTemp("gitea_input")
9293
if err != nil {
9394
return fmt.Errorf("%s create temp file when rendering %s failed: %w", p.Name(), p.Command, err)
9495
}

modules/repository/temp.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import (
1717
// localCopyPath returns the local repository temporary copy path.
1818
func localCopyPath() string {
1919
if setting.Repository.Local.LocalCopyPath == "" {
20-
return filepath.Join(setting.TempDir(), "local-repo")
20+
return filepath.Join(setting.TempPath, "local-repo")
2121
} else if !filepath.IsAbs(setting.Repository.Local.LocalCopyPath) {
22-
return filepath.Join(setting.TempDir(), setting.Repository.Local.LocalCopyPath)
22+
return filepath.Join(setting.TempPath, setting.Repository.Local.LocalCopyPath)
2323
}
2424
return setting.Repository.Local.LocalCopyPath
2525
}

0 commit comments

Comments
 (0)