]> source.dussan.org Git - gitea.git/commitdiff
Make `LocalCopyPath` a setting instead of a hard-coded path (#1881)
authorPhil Hopper <philhopper@sibertec.com>
Tue, 6 Jun 2017 09:09:54 +0000 (05:09 -0400)
committerBo-Yi Wu <appleboy.tw@gmail.com>
Tue, 6 Jun 2017 09:09:54 +0000 (04:09 -0500)
conf/app.ini
models/repo.go
models/repo_test.go
modules/setting/setting.go

index 3eb46465cf942844283e1d5b47beaa1fea12e6e7..29836748d60ad8681960dbcffdb510a58acac61e 100644 (file)
@@ -32,6 +32,10 @@ LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd,
 ; Separate values by commas. Preview tab in edit mode won't show if the file extension doesn't match
 PREVIEWABLE_FILE_MODES = markdown
 
+[repository.local]
+; Path for uploads. Defaults to `tmp/local-repo`
+LOCAL_COPY_PATH = tmp/local-repo
+
 [repository.upload]
 ; Whether repository file uploads are enabled. Defaults to `true`
 ENABLED = true
index 7aaeb6e0e7098114b6938500745a29190c1d999f..f92f753b9223b2815d0d52145e1eee3b43f80b5a 100644 (file)
@@ -676,7 +676,10 @@ func (repo *Repository) DescriptionHTML() template.HTML {
 
 // LocalCopyPath returns the local repository copy path
 func (repo *Repository) LocalCopyPath() string {
-       return path.Join(setting.AppDataPath, "tmp/local-repo", com.ToStr(repo.ID))
+       if filepath.IsAbs(setting.Repository.Local.LocalCopyPath) {
+               return path.Join(setting.Repository.Local.LocalCopyPath, com.ToStr(repo.ID))
+       }
+       return path.Join(setting.AppDataPath, setting.Repository.Local.LocalCopyPath, com.ToStr(repo.ID))
 }
 
 // UpdateLocalCopyBranch pulls latest changes of given branch from repoPath to localPath.
index a538d44c0ea52aaf93f13510e43016e23e00c371..13ac272b6dbbf0fbec9d6d6c81630897e5de9784 100644 (file)
@@ -5,11 +5,14 @@
 package models
 
 import (
+       "path"
        "testing"
 
        "code.gitea.io/gitea/modules/markdown"
+       "code.gitea.io/gitea/modules/setting"
 
        "github.com/stretchr/testify/assert"
+       "github.com/Unknwon/com"
 )
 
 func TestRepo(t *testing.T) {
@@ -132,3 +135,22 @@ func TestRepoAPIURL(t *testing.T) {
 
        assert.Equal(t, "https://try.gitea.io/api/v1/repos/user12/repo10", repo.APIURL())
 }
+
+func TestRepoLocalCopyPath(t *testing.T) {
+       assert.NoError(t, PrepareTestDatabase())
+
+       repo, err := GetRepositoryByID(10)
+       assert.NoError(t, err)
+       assert.NotNil(t, repo)
+
+       // test default
+       repoID := com.ToStr(repo.ID)
+       expected := path.Join(setting.AppDataPath, setting.Repository.Local.LocalCopyPath, repoID)
+       assert.Equal(t, expected, repo.LocalCopyPath())
+
+       // test absolute setting
+       tempPath := "/tmp/gitea/local-copy-path"
+       expected = path.Join(tempPath, repoID)
+       setting.Repository.Local.LocalCopyPath = tempPath
+       assert.Equal(t, expected, repo.LocalCopyPath())
+}
index a948527a2cca07e7c41d18c55d469ff9d1a4145c..cd2d4ab720484265c187552c07f78d410db4e760 100644 (file)
@@ -174,6 +174,11 @@ var (
                        FileMaxSize  int64
                        MaxFiles     int
                } `ini:"-"`
+
+               // Repository local settings
+               Local struct {
+                       LocalCopyPath       string
+               } `ini:"-"`
        }{
                AnsiCharset:            "",
                ForcePrivate:           false,
@@ -206,6 +211,13 @@ var (
                        FileMaxSize:  3,
                        MaxFiles:     5,
                },
+
+               // Repository local settings
+               Local: struct {
+                       LocalCopyPath  string
+               }{
+                       LocalCopyPath: "tmp/local-repo",
+               },
        }
        RepoRootPath string
        ScriptType   = "bash"
@@ -887,6 +899,8 @@ please consider changing to GITEA_CUSTOM`)
                log.Fatal(4, "Failed to map Repository.Editor settings: %v", err)
        } else if err = Cfg.Section("repository.upload").MapTo(&Repository.Upload); err != nil {
                log.Fatal(4, "Failed to map Repository.Upload settings: %v", err)
+       } else if err = Cfg.Section("repository.local").MapTo(&Repository.Local); err != nil {
+               log.Fatal(4, "Failed to map Repository.Local settings: %v", err)
        }
 
        if !filepath.IsAbs(Repository.Upload.TempPath) {