Skip to content

Commit 87d6e76

Browse files
committed
Revert "Fix the wrong derive path (go-gitea#26271) (go-gitea#26318)"
This reverts commit 88f6f75.
1 parent cb1a4da commit 87d6e76

File tree

2 files changed

+17
-215
lines changed

2 files changed

+17
-215
lines changed

modules/setting/storage.go

Lines changed: 17 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,12 @@ func getDefaultStorageSection(rootCfg ConfigProvider) ConfigSection {
8484
return storageSec
8585
}
8686

87-
// getStorage will find target section and extra special section first and then read override
88-
// items from extra section
8987
func getStorage(rootCfg ConfigProvider, name, typ string, sec ConfigSection) (*Storage, error) {
9088
if name == "" {
9189
return nil, errors.New("no name for storage")
9290
}
9391

9492
var targetSec ConfigSection
95-
// check typ first
9693
if typ != "" {
9794
var err error
9895
targetSec, err = rootCfg.GetSection(storageSectionName + "." + typ)
@@ -114,40 +111,24 @@ func getStorage(rootCfg ConfigProvider, name, typ string, sec ConfigSection) (*S
114111
}
115112
}
116113

117-
if targetSec == nil && sec != nil {
118-
secTyp := sec.Key("STORAGE_TYPE").String()
119-
if IsValidStorageType(StorageType(secTyp)) {
120-
targetSec = sec
121-
} else if secTyp != "" {
122-
targetSec, _ = rootCfg.GetSection(storageSectionName + "." + secTyp)
123-
}
124-
}
125-
126-
targetSecIsStoragename := false
127114
storageNameSec, _ := rootCfg.GetSection(storageSectionName + "." + name)
115+
116+
if targetSec == nil {
117+
targetSec = sec
118+
}
128119
if targetSec == nil {
129120
targetSec = storageNameSec
130-
targetSecIsStoragename = storageNameSec != nil
131121
}
132-
133122
if targetSec == nil {
134123
targetSec = getDefaultStorageSection(rootCfg)
135124
} else {
136125
targetType := targetSec.Key("STORAGE_TYPE").String()
137126
switch {
138127
case targetType == "":
139-
if targetSec != storageNameSec && storageNameSec != nil {
140-
targetSec = storageNameSec
141-
targetSecIsStoragename = true
142-
if targetSec.Key("STORAGE_TYPE").String() == "" {
143-
return nil, fmt.Errorf("storage section %s.%s has no STORAGE_TYPE", storageSectionName, name)
144-
}
128+
if targetSec.Key("PATH").String() == "" {
129+
targetSec = getDefaultStorageSection(rootCfg)
145130
} else {
146-
if targetSec.Key("PATH").String() == "" {
147-
targetSec = getDefaultStorageSection(rootCfg)
148-
} else {
149-
targetSec.Key("STORAGE_TYPE").SetValue("local")
150-
}
131+
targetSec.Key("STORAGE_TYPE").SetValue("local")
151132
}
152133
default:
153134
newTargetSec, _ := rootCfg.GetSection(storageSectionName + "." + targetType)
@@ -172,46 +153,26 @@ func getStorage(rootCfg ConfigProvider, name, typ string, sec ConfigSection) (*S
172153
return nil, fmt.Errorf("invalid storage type %q", targetType)
173154
}
174155

175-
// extra config section will be read SERVE_DIRECT, PATH, MINIO_BASE_PATH, MINIO_BUCKET to override the targetsec when possible
176-
extraConfigSec := sec
177-
if extraConfigSec == nil {
178-
extraConfigSec = storageNameSec
179-
}
180-
181156
var storage Storage
182157
storage.Type = StorageType(targetType)
183158

184159
switch targetType {
185160
case string(LocalStorageType):
186-
targetPath := ConfigSectionKeyString(targetSec, "PATH", "")
187-
if targetPath == "" {
188-
targetPath = AppDataPath
189-
} else if !filepath.IsAbs(targetPath) {
190-
targetPath = filepath.Join(AppDataPath, targetPath)
191-
}
192-
193-
var fallbackPath string
194-
if targetSecIsStoragename {
195-
fallbackPath = targetPath
196-
} else {
197-
fallbackPath = filepath.Join(targetPath, name)
198-
}
199-
200-
if extraConfigSec == nil {
201-
storage.Path = fallbackPath
202-
} else {
203-
storage.Path = ConfigSectionKeyString(extraConfigSec, "PATH", fallbackPath)
204-
if !filepath.IsAbs(storage.Path) {
205-
storage.Path = filepath.Join(targetPath, storage.Path)
206-
}
161+
storage.Path = ConfigSectionKeyString(targetSec, "PATH", filepath.Join(AppDataPath, name))
162+
if !filepath.IsAbs(storage.Path) {
163+
storage.Path = filepath.Join(AppWorkPath, storage.Path)
207164
}
208-
209165
case string(MinioStorageType):
166+
storage.MinioConfig.BasePath = name + "/"
167+
210168
if err := targetSec.MapTo(&storage.MinioConfig); err != nil {
211169
return nil, fmt.Errorf("map minio config failed: %v", err)
212170
}
213-
214-
storage.MinioConfig.BasePath = name + "/"
171+
// extra config section will be read SERVE_DIRECT, PATH, MINIO_BASE_PATH to override the targetsec
172+
extraConfigSec := sec
173+
if extraConfigSec == nil {
174+
extraConfigSec = storageNameSec
175+
}
215176

216177
if extraConfigSec != nil {
217178
storage.MinioConfig.ServeDirect = ConfigSectionKeyBool(extraConfigSec, "SERVE_DIRECT", storage.MinioConfig.ServeDirect)

modules/setting/storage_test.go

Lines changed: 0 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package setting
55

66
import (
7-
"path/filepath"
87
"testing"
98

109
"github.com/stretchr/testify/assert"
@@ -91,161 +90,3 @@ STORAGE_TYPE = minio
9190
assert.EqualValues(t, "gitea", RepoAvatar.Storage.MinioConfig.Bucket)
9291
assert.EqualValues(t, "repo-avatars/", RepoAvatar.Storage.MinioConfig.BasePath)
9392
}
94-
95-
type testLocalStoragePathCase struct {
96-
loader func(rootCfg ConfigProvider) error
97-
storagePtr **Storage
98-
expectedPath string
99-
}
100-
101-
func testLocalStoragePath(t *testing.T, appDataPath, iniStr string, cases []testLocalStoragePathCase) {
102-
cfg, err := NewConfigProviderFromData(iniStr)
103-
assert.NoError(t, err)
104-
AppDataPath = appDataPath
105-
for _, c := range cases {
106-
assert.NoError(t, c.loader(cfg))
107-
storage := *c.storagePtr
108-
109-
assert.EqualValues(t, "local", storage.Type)
110-
assert.True(t, filepath.IsAbs(storage.Path))
111-
assert.EqualValues(t, filepath.Clean(c.expectedPath), filepath.Clean(storage.Path))
112-
}
113-
}
114-
115-
func Test_getStorageInheritStorageTypeLocal(t *testing.T) {
116-
testLocalStoragePath(t, "/appdata", `
117-
[storage]
118-
STORAGE_TYPE = local
119-
`, []testLocalStoragePathCase{
120-
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
121-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/repo-archive"},
122-
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
123-
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
124-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
125-
})
126-
}
127-
128-
func Test_getStorageInheritStorageTypeLocalPath(t *testing.T) {
129-
testLocalStoragePath(t, "/appdata", `
130-
[storage]
131-
STORAGE_TYPE = local
132-
PATH = /data/gitea
133-
`, []testLocalStoragePathCase{
134-
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
135-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/repo-archive"},
136-
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
137-
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
138-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
139-
})
140-
}
141-
142-
func Test_getStorageInheritStorageTypeLocalRelativePath(t *testing.T) {
143-
testLocalStoragePath(t, "/appdata", `
144-
[storage]
145-
STORAGE_TYPE = local
146-
PATH = storages
147-
`, []testLocalStoragePathCase{
148-
{loadPackagesFrom, &Packages.Storage, "/appdata/storages/packages"},
149-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/appdata/storages/repo-archive"},
150-
{loadActionsFrom, &Actions.LogStorage, "/appdata/storages/actions_log"},
151-
{loadAvatarsFrom, &Avatar.Storage, "/appdata/storages/avatars"},
152-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/storages/repo-avatars"},
153-
})
154-
}
155-
156-
func Test_getStorageInheritStorageTypeLocalPathOverride(t *testing.T) {
157-
testLocalStoragePath(t, "/appdata", `
158-
[storage]
159-
STORAGE_TYPE = local
160-
PATH = /data/gitea
161-
162-
[repo-archive]
163-
PATH = /data/gitea/the-archives-dir
164-
`, []testLocalStoragePathCase{
165-
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
166-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/the-archives-dir"},
167-
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
168-
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
169-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
170-
})
171-
}
172-
173-
func Test_getStorageInheritStorageTypeLocalPathOverrideEmpty(t *testing.T) {
174-
testLocalStoragePath(t, "/appdata", `
175-
[storage]
176-
STORAGE_TYPE = local
177-
PATH = /data/gitea
178-
179-
[repo-archive]
180-
`, []testLocalStoragePathCase{
181-
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
182-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/repo-archive"},
183-
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
184-
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
185-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
186-
})
187-
}
188-
189-
func Test_getStorageInheritStorageTypeLocalRelativePathOverride(t *testing.T) {
190-
testLocalStoragePath(t, "/appdata", `
191-
[storage]
192-
STORAGE_TYPE = local
193-
PATH = /data/gitea
194-
195-
[repo-archive]
196-
PATH = the-archives-dir
197-
`, []testLocalStoragePathCase{
198-
{loadPackagesFrom, &Packages.Storage, "/data/gitea/packages"},
199-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/the-archives-dir"},
200-
{loadActionsFrom, &Actions.LogStorage, "/data/gitea/actions_log"},
201-
{loadAvatarsFrom, &Avatar.Storage, "/data/gitea/avatars"},
202-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/data/gitea/repo-avatars"},
203-
})
204-
}
205-
206-
func Test_getStorageInheritStorageTypeLocalPathOverride3(t *testing.T) {
207-
testLocalStoragePath(t, "/appdata", `
208-
[storage.repo-archive]
209-
STORAGE_TYPE = local
210-
PATH = /data/gitea/archives
211-
`, []testLocalStoragePathCase{
212-
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
213-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/archives"},
214-
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
215-
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
216-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
217-
})
218-
}
219-
220-
func Test_getStorageInheritStorageTypeLocalPathOverride4(t *testing.T) {
221-
testLocalStoragePath(t, "/appdata", `
222-
[storage.repo-archive]
223-
STORAGE_TYPE = local
224-
PATH = /data/gitea/archives
225-
226-
[repo-archive]
227-
PATH = /tmp/gitea/archives
228-
`, []testLocalStoragePathCase{
229-
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
230-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/tmp/gitea/archives"},
231-
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
232-
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
233-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
234-
})
235-
}
236-
237-
func Test_getStorageInheritStorageTypeLocalPathOverride5(t *testing.T) {
238-
testLocalStoragePath(t, "/appdata", `
239-
[storage.repo-archive]
240-
STORAGE_TYPE = local
241-
PATH = /data/gitea/archives
242-
243-
[repo-archive]
244-
`, []testLocalStoragePathCase{
245-
{loadPackagesFrom, &Packages.Storage, "/appdata/packages"},
246-
{loadRepoArchiveFrom, &RepoArchive.Storage, "/data/gitea/archives"},
247-
{loadActionsFrom, &Actions.LogStorage, "/appdata/actions_log"},
248-
{loadAvatarsFrom, &Avatar.Storage, "/appdata/avatars"},
249-
{loadRepoAvatarFrom, &RepoAvatar.Storage, "/appdata/repo-avatars"},
250-
})
251-
}

0 commit comments

Comments
 (0)