From c2fc002002e43af4bcc9e4a1d845541f9bbfae6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=98=99=E2=97=A6=20The=20Tablet=20=E2=9D=80=20GamerGirla?= =?UTF-8?q?ndCo=20=E2=97=A6=E2=9D=A7?= Date: Sun, 23 Nov 2025 18:08:36 -0500 Subject: [PATCH] fix moving repos to a different subgroup --- services/group/group.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/group/group.go b/services/group/group.go index 1ef3362061..d09077cbbf 100644 --- a/services/group/group.go +++ b/services/group/group.go @@ -7,6 +7,8 @@ import ( "context" "errors" "fmt" + "os" + "path/filepath" "strings" "code.gitea.io/gitea/models/db" @@ -16,6 +18,7 @@ import ( user_model "code.gitea.io/gitea/models/user" "code.gitea.io/gitea/modules/gitrepo" "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" ) @@ -137,6 +140,15 @@ func MoveGroupItem(ctx context.Context, opts MoveGroupOptions, doer *user_model. opts.NewPos = int(repoCount) } if repo.GroupID != opts.NewParent || repo.GroupSortOrder != opts.NewPos { + ndir := filepath.Dir(filepath.Join(setting.RepoRootPath, filepath.FromSlash(repo_model.RelativePath(repo.OwnerName, repo.Name, opts.NewParent)))) + _, err = os.Stat(ndir) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + _ = os.MkdirAll(ndir, 0o755) + } else { + return err + } + } if err = gitrepo.RenameRepository(ctx, repo, repo_model.StorageRepo(repo_model.RelativePath(repo.OwnerName, repo.Name, opts.NewParent))); err != nil { return err }