Skip to content

Commit 89ace8d

Browse files
committed
Some refactor for repo path
1 parent 64fcf84 commit 89ace8d

File tree

6 files changed

+26
-30
lines changed

6 files changed

+26
-30
lines changed

modules/gitrepo/gitrepo.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,12 @@ func DeleteRepository(ctx context.Context, repo Repository) error {
8080

8181
// RenameRepository renames a repository's name on disk
8282
func RenameRepository(ctx context.Context, repo, newRepo Repository) error {
83-
if err := util.Rename(repoPath(repo), repoPath(newRepo)); err != nil {
83+
dstDir := repoPath(newRepo)
84+
if err := os.MkdirAll(filepath.Dir(dstDir), os.ModePerm); err != nil {
85+
return fmt.Errorf("Failed to create dir %s: %w", filepath.Dir(dstDir), err)
86+
}
87+
88+
if err := util.Rename(repoPath(repo), dstDir); err != nil {
8489
return fmt.Errorf("rename repository directory: %w", err)
8590
}
8691
return nil
@@ -116,5 +121,8 @@ func RemoveRepoFileOrDir(ctx context.Context, repo Repository, relativeFileOrDir
116121

117122
func CreateRepoFile(ctx context.Context, repo Repository, relativeFilePath string) (io.WriteCloser, error) {
118123
absoluteFilePath := filepath.Join(repoPath(repo), relativeFilePath)
124+
if err := os.MkdirAll(filepath.Dir(absoluteFilePath), os.ModePerm); err != nil {
125+
return nil, err
126+
}
119127
return os.Create(absoluteFilePath)
120128
}

routers/api/v1/admin/adopt.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88

99
repo_model "code.gitea.io/gitea/models/repo"
1010
user_model "code.gitea.io/gitea/models/user"
11-
"code.gitea.io/gitea/modules/util"
11+
"code.gitea.io/gitea/modules/gitrepo"
1212
"code.gitea.io/gitea/routers/api/v1/utils"
1313
"code.gitea.io/gitea/services/context"
1414
repo_service "code.gitea.io/gitea/services/repository"
@@ -99,12 +99,12 @@ func AdoptRepository(ctx *context.APIContext) {
9999
ctx.APIErrorInternal(err)
100100
return
101101
}
102-
isDir, err := util.IsDir(repo_model.RepoPath(ctxUser.Name, repoName))
102+
exist, err := gitrepo.IsRepositoryExist(ctx, repo_model.StorageRepo(repo_model.RelativePath(ctxUser.Name, repoName)))
103103
if err != nil {
104104
ctx.APIErrorInternal(err)
105105
return
106106
}
107-
if has || !isDir {
107+
if has || !exist {
108108
ctx.APIErrorNotFound()
109109
return
110110
}
@@ -161,12 +161,12 @@ func DeleteUnadoptedRepository(ctx *context.APIContext) {
161161
ctx.APIErrorInternal(err)
162162
return
163163
}
164-
isDir, err := util.IsDir(repo_model.RepoPath(ctxUser.Name, repoName))
164+
exist, err := gitrepo.IsRepositoryExist(ctx, repo_model.StorageRepo(repo_model.RelativePath(ctxUser.Name, repoName)))
165165
if err != nil {
166166
ctx.APIErrorInternal(err)
167167
return
168168
}
169-
if has || !isDir {
169+
if has || !exist {
170170
ctx.APIErrorNotFound()
171171
return
172172
}

routers/web/admin/repos.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ import (
1111
"code.gitea.io/gitea/models/db"
1212
repo_model "code.gitea.io/gitea/models/repo"
1313
user_model "code.gitea.io/gitea/models/user"
14+
"code.gitea.io/gitea/modules/gitrepo"
1415
"code.gitea.io/gitea/modules/log"
1516
"code.gitea.io/gitea/modules/setting"
1617
"code.gitea.io/gitea/modules/templates"
17-
"code.gitea.io/gitea/modules/util"
1818
"code.gitea.io/gitea/routers/web/explore"
1919
"code.gitea.io/gitea/services/context"
2020
repo_service "code.gitea.io/gitea/services/repository"
@@ -134,12 +134,12 @@ func AdoptOrDeleteRepository(ctx *context.Context) {
134134
ctx.ServerError("IsRepositoryExist", err)
135135
return
136136
}
137-
isDir, err := util.IsDir(repo_model.RepoPath(ctxUser.Name, repoName))
137+
exist, err := gitrepo.IsRepositoryExist(ctx, repo_model.StorageRepo(repo_model.RelativePath(ctxUser.Name, repoName)))
138138
if err != nil {
139139
ctx.ServerError("IsDir", err)
140140
return
141141
}
142-
if has || !isDir {
142+
if has || !exist {
143143
// Fallthrough to failure mode
144144
} else if action == "adopt" {
145145
if _, err := repo_service.AdoptRepository(ctx, ctx.Doer, ctxUser, repo_service.CreateRepoOptions{

services/migrations/gitea_uploader.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import (
88
"context"
99
"fmt"
1010
"io"
11-
"os"
12-
"path/filepath"
1311
"strconv"
1412
"strings"
1513
"time"
@@ -589,12 +587,7 @@ func (g *GiteaLocalUploader) updateGitForPullRequest(ctx context.Context, pr *ba
589587
}
590588
defer ret.Close()
591589

592-
pullDir := filepath.Join(g.repo.RepoPath(), "pulls")
593-
if err = os.MkdirAll(pullDir, os.ModePerm); err != nil {
594-
return err
595-
}
596-
597-
f, err := os.Create(filepath.Join(pullDir, fmt.Sprintf("%d.patch", pr.Number)))
590+
f, err := gitrepo.CreateRepoFile(ctx, g.repo, fmt.Sprintf("pulls/%d.patch", pr.Number))
598591
if err != nil {
599592
return err
600593
}

services/repository/adopt.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import (
2323
"code.gitea.io/gitea/modules/optional"
2424
repo_module "code.gitea.io/gitea/modules/repository"
2525
"code.gitea.io/gitea/modules/setting"
26-
"code.gitea.io/gitea/modules/util"
2726
notify_service "code.gitea.io/gitea/services/notify"
2827
)
2928

@@ -214,13 +213,13 @@ func DeleteUnadoptedRepository(ctx context.Context, doer, u *user_model.User, re
214213
return err
215214
}
216215

217-
repoPath := repo_model.RepoPath(u.Name, repoName)
218-
isExist, err := util.IsExist(repoPath)
216+
relativePath := repo_model.RelativePath(u.Name, repoName)
217+
exist, err := gitrepo.IsRepositoryExist(ctx, repo_model.StorageRepo(relativePath))
219218
if err != nil {
220-
log.Error("Unable to check if %s exists. Error: %v", repoPath, err)
219+
log.Error("Unable to check if %s exists. Error: %v", relativePath, err)
221220
return err
222221
}
223-
if !isExist {
222+
if !exist {
224223
return repo_model.ErrRepoNotExist{
225224
OwnerName: u.Name,
226225
Name: repoName,
@@ -236,7 +235,7 @@ func DeleteUnadoptedRepository(ctx context.Context, doer, u *user_model.User, re
236235
}
237236
}
238237

239-
return util.RemoveAll(repoPath)
238+
return gitrepo.DeleteRepository(ctx, repo_model.StorageRepo(relativePath))
240239
}
241240

242241
type unadoptedRepositories struct {

services/repository/transfer.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package repository
66
import (
77
"context"
88
"fmt"
9-
"os"
109
"strings"
1110

1211
"code.gitea.io/gitea/models/db"
@@ -291,14 +290,11 @@ func transferOwnership(ctx context.Context, doer *user_model.User, newOwnerName
291290
}
292291

293292
// Rename remote repository to new path and delete local copy.
294-
dir := user_model.UserPath(newOwner.Name)
295-
if err := os.MkdirAll(dir, os.ModePerm); err != nil {
296-
return fmt.Errorf("Failed to create dir %s: %w", dir, err)
297-
}
298-
299-
if err := util.Rename(repo_model.RepoPath(oldOwner.Name, repo.Name), repo_model.RepoPath(newOwner.Name, repo.Name)); err != nil {
293+
oldRelativePath, newRelativePath := repo_model.RelativePath(oldOwner.Name, repo.Name), repo_model.RelativePath(newOwner.Name, repo.Name)
294+
if err := gitrepo.RenameRepository(ctx, repo_model.StorageRepo(oldRelativePath), repo_model.StorageRepo(newRelativePath)); err != nil {
300295
return fmt.Errorf("rename repository directory: %w", err)
301296
}
297+
302298
repoRenamed = true
303299

304300
// Rename remote wiki repository to new path and delete local copy.

0 commit comments

Comments
 (0)