Skip to content

Commit 48ccd32

Browse files
authored
Move some functions into services/repository (go-gitea#17660)
1 parent 447428f commit 48ccd32

File tree

19 files changed

+114
-136
lines changed

19 files changed

+114
-136
lines changed

integrations/pull_update_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"code.gitea.io/gitea/models"
1414
"code.gitea.io/gitea/models/unittest"
1515
"code.gitea.io/gitea/modules/repofiles"
16-
repo_module "code.gitea.io/gitea/modules/repository"
1716
pull_service "code.gitea.io/gitea/services/pull"
1817
repo_service "code.gitea.io/gitea/services/repository"
1918

@@ -89,7 +88,7 @@ func createOutdatedPR(t *testing.T, actor, forkOrg *models.User) *models.PullReq
8988
assert.NoError(t, err)
9089
assert.NotEmpty(t, baseRepo)
9190

92-
headRepo, err := repo_module.ForkRepository(actor, forkOrg, models.ForkRepoOptions{
91+
headRepo, err := repo_service.ForkRepository(actor, forkOrg, models.ForkRepoOptions{
9392
BaseRepo: baseRepo,
9493
Name: "repo-pr-update",
9594
Description: "desc",

modules/repository/init.go

Lines changed: 0 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -196,92 +196,6 @@ func checkInitRepository(owner, name string) (err error) {
196196
return nil
197197
}
198198

199-
func adoptRepository(ctx context.Context, repoPath string, u *models.User, repo *models.Repository, opts models.CreateRepoOptions) (err error) {
200-
isExist, err := util.IsExist(repoPath)
201-
if err != nil {
202-
log.Error("Unable to check if %s exists. Error: %v", repoPath, err)
203-
return err
204-
}
205-
if !isExist {
206-
return fmt.Errorf("adoptRepository: path does not already exist: %s", repoPath)
207-
}
208-
209-
if err := createDelegateHooks(repoPath); err != nil {
210-
return fmt.Errorf("createDelegateHooks: %v", err)
211-
}
212-
213-
// Re-fetch the repository from database before updating it (else it would
214-
// override changes that were done earlier with sql)
215-
if repo, err = models.GetRepositoryByIDCtx(ctx, repo.ID); err != nil {
216-
return fmt.Errorf("getRepositoryByID: %v", err)
217-
}
218-
219-
repo.IsEmpty = false
220-
gitRepo, err := git.OpenRepository(repo.RepoPath())
221-
if err != nil {
222-
return fmt.Errorf("openRepository: %v", err)
223-
}
224-
defer gitRepo.Close()
225-
if len(opts.DefaultBranch) > 0 {
226-
repo.DefaultBranch = opts.DefaultBranch
227-
228-
if err = gitRepo.SetDefaultBranch(repo.DefaultBranch); err != nil {
229-
return fmt.Errorf("setDefaultBranch: %v", err)
230-
}
231-
} else {
232-
repo.DefaultBranch, err = gitRepo.GetDefaultBranch()
233-
if err != nil {
234-
repo.DefaultBranch = setting.Repository.DefaultBranch
235-
if err = gitRepo.SetDefaultBranch(repo.DefaultBranch); err != nil {
236-
return fmt.Errorf("setDefaultBranch: %v", err)
237-
}
238-
}
239-
240-
repo.DefaultBranch = strings.TrimPrefix(repo.DefaultBranch, git.BranchPrefix)
241-
}
242-
branches, _, _ := gitRepo.GetBranches(0, 0)
243-
found := false
244-
hasDefault := false
245-
hasMaster := false
246-
hasMain := false
247-
for _, branch := range branches {
248-
if branch == repo.DefaultBranch {
249-
found = true
250-
break
251-
} else if branch == setting.Repository.DefaultBranch {
252-
hasDefault = true
253-
} else if branch == "master" {
254-
hasMaster = true
255-
} else if branch == "main" {
256-
hasMain = true
257-
}
258-
}
259-
if !found {
260-
if hasDefault {
261-
repo.DefaultBranch = setting.Repository.DefaultBranch
262-
} else if hasMaster {
263-
repo.DefaultBranch = "master"
264-
} else if hasMain {
265-
repo.DefaultBranch = "main"
266-
} else if len(branches) > 0 {
267-
repo.DefaultBranch = branches[0]
268-
} else {
269-
repo.IsEmpty = true
270-
repo.DefaultBranch = setting.Repository.DefaultBranch
271-
}
272-
273-
if err = gitRepo.SetDefaultBranch(repo.DefaultBranch); err != nil {
274-
return fmt.Errorf("setDefaultBranch: %v", err)
275-
}
276-
}
277-
278-
if err = models.UpdateRepositoryCtx(ctx, repo, false); err != nil {
279-
return fmt.Errorf("updateRepository: %v", err)
280-
}
281-
282-
return nil
283-
}
284-
285199
// InitRepository initializes README and .gitignore if needed.
286200
func initRepository(ctx context.Context, repoPath string, u *models.User, repo *models.Repository, opts models.CreateRepoOptions) (err error) {
287201
if err = checkInitRepository(repo.OwnerName, repo.Name); err != nil {

routers/api/v1/admin/adopt.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import (
99

1010
"code.gitea.io/gitea/models"
1111
"code.gitea.io/gitea/modules/context"
12-
"code.gitea.io/gitea/modules/repository"
1312
"code.gitea.io/gitea/modules/util"
1413
"code.gitea.io/gitea/routers/api/v1/utils"
14+
repo_service "code.gitea.io/gitea/services/repository"
1515
)
1616

1717
// ListUnadoptedRepositories lists the unadopted repositories that match the provided names
@@ -41,7 +41,7 @@ func ListUnadoptedRepositories(ctx *context.APIContext) {
4141
// "$ref": "#/responses/forbidden"
4242

4343
listOptions := utils.GetListOptions(ctx)
44-
repoNames, count, err := repository.ListUnadoptedRepositories(ctx.FormString("query"), &listOptions)
44+
repoNames, count, err := repo_service.ListUnadoptedRepositories(ctx.FormString("query"), &listOptions)
4545
if err != nil {
4646
ctx.InternalServerError(err)
4747
}
@@ -104,7 +104,7 @@ func AdoptRepository(ctx *context.APIContext) {
104104
ctx.NotFound()
105105
return
106106
}
107-
if _, err := repository.AdoptRepository(ctx.User, ctxUser, models.CreateRepoOptions{
107+
if _, err := repo_service.AdoptRepository(ctx.User, ctxUser, models.CreateRepoOptions{
108108
Name: repoName,
109109
IsPrivate: true,
110110
}); err != nil {
@@ -167,7 +167,7 @@ func DeleteUnadoptedRepository(ctx *context.APIContext) {
167167
return
168168
}
169169

170-
if err := repository.DeleteUnadoptedRepository(ctx.User, ctxUser, repoName); err != nil {
170+
if err := repo_service.DeleteUnadoptedRepository(ctx.User, ctxUser, repoName); err != nil {
171171
ctx.InternalServerError(err)
172172
return
173173
}

routers/api/v1/admin/cron.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import (
88
"net/http"
99

1010
"code.gitea.io/gitea/modules/context"
11-
"code.gitea.io/gitea/modules/cron"
1211
"code.gitea.io/gitea/modules/log"
1312
"code.gitea.io/gitea/modules/structs"
1413
"code.gitea.io/gitea/modules/util"
1514
"code.gitea.io/gitea/routers/api/v1/utils"
15+
"code.gitea.io/gitea/services/cron"
1616
)
1717

1818
// ListCronTasks api for getting cron tasks

routers/init.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"code.gitea.io/gitea/models"
1616
"code.gitea.io/gitea/modules/appstate"
1717
"code.gitea.io/gitea/modules/cache"
18-
"code.gitea.io/gitea/modules/cron"
1918
"code.gitea.io/gitea/modules/eventsource"
2019
"code.gitea.io/gitea/modules/git"
2120
"code.gitea.io/gitea/modules/highlight"
@@ -42,6 +41,7 @@ import (
4241
"code.gitea.io/gitea/services/archiver"
4342
"code.gitea.io/gitea/services/auth"
4443
"code.gitea.io/gitea/services/auth/source/oauth2"
44+
"code.gitea.io/gitea/services/cron"
4545
"code.gitea.io/gitea/services/mailer"
4646
mirror_service "code.gitea.io/gitea/services/mirror"
4747
pull_service "code.gitea.io/gitea/services/pull"

routers/web/admin/admin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"code.gitea.io/gitea/models"
1919
"code.gitea.io/gitea/modules/base"
2020
"code.gitea.io/gitea/modules/context"
21-
"code.gitea.io/gitea/modules/cron"
2221
"code.gitea.io/gitea/modules/git"
2322
"code.gitea.io/gitea/modules/json"
2423
"code.gitea.io/gitea/modules/log"
@@ -28,6 +27,7 @@ import (
2827
"code.gitea.io/gitea/modules/timeutil"
2928
"code.gitea.io/gitea/modules/updatechecker"
3029
"code.gitea.io/gitea/modules/web"
30+
"code.gitea.io/gitea/services/cron"
3131
"code.gitea.io/gitea/services/forms"
3232
"code.gitea.io/gitea/services/mailer"
3333

routers/web/admin/repos.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import (
1414
"code.gitea.io/gitea/modules/base"
1515
"code.gitea.io/gitea/modules/context"
1616
"code.gitea.io/gitea/modules/log"
17-
"code.gitea.io/gitea/modules/repository"
1817
"code.gitea.io/gitea/modules/setting"
1918
"code.gitea.io/gitea/modules/util"
2019
"code.gitea.io/gitea/routers/web/explore"
@@ -95,7 +94,7 @@ func UnadoptedRepos(ctx *context.Context) {
9594
}
9695

9796
ctx.Data["Keyword"] = q
98-
repoNames, count, err := repository.ListUnadoptedRepositories(q, &opts)
97+
repoNames, count, err := repo_service.ListUnadoptedRepositories(q, &opts)
9998
if err != nil {
10099
ctx.ServerError("ListUnadoptedRepositories", err)
101100
}
@@ -147,7 +146,7 @@ func AdoptOrDeleteRepository(ctx *context.Context) {
147146
if has || !isDir {
148147
// Fallthrough to failure mode
149148
} else if action == "adopt" {
150-
if _, err := repository.AdoptRepository(ctx.User, ctxUser, models.CreateRepoOptions{
149+
if _, err := repo_service.AdoptRepository(ctx.User, ctxUser, models.CreateRepoOptions{
151150
Name: dirSplit[1],
152151
IsPrivate: true,
153152
}); err != nil {
@@ -156,7 +155,7 @@ func AdoptOrDeleteRepository(ctx *context.Context) {
156155
}
157156
ctx.Flash.Success(ctx.Tr("repo.adopt_preexisting_success", dir))
158157
} else if action == "delete" {
159-
if err := repository.DeleteUnadoptedRepository(ctx.User, ctxUser, dirSplit[1]); err != nil {
158+
if err := repo_service.DeleteUnadoptedRepository(ctx.User, ctxUser, dirSplit[1]); err != nil {
160159
ctx.ServerError("repository.AdoptRepository", err)
161160
return
162161
}

routers/web/repo/setting.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ func SettingsPost(ctx *context.Context) {
557557
return
558558
}
559559

560-
if err := repository.ConvertForkToNormalRepository(repo); err != nil {
560+
if err := repo_service.ConvertForkToNormalRepository(repo); err != nil {
561561
log.Error("Unable to convert repository %-v from fork. Error: %v", repo, err)
562562
ctx.ServerError("Convert Fork", err)
563563
return

routers/web/user/setting/adopt.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ import (
99

1010
"code.gitea.io/gitea/models"
1111
"code.gitea.io/gitea/modules/context"
12-
"code.gitea.io/gitea/modules/repository"
1312
"code.gitea.io/gitea/modules/setting"
1413
"code.gitea.io/gitea/modules/util"
14+
repo_service "code.gitea.io/gitea/services/repository"
1515
)
1616

1717
// AdoptOrDeleteRepository adopts or deletes a repository
@@ -44,7 +44,7 @@ func AdoptOrDeleteRepository(ctx *context.Context) {
4444
if has || !isDir {
4545
// Fallthrough to failure mode
4646
} else if action == "adopt" && allowAdopt {
47-
if _, err := repository.AdoptRepository(ctxUser, ctxUser, models.CreateRepoOptions{
47+
if _, err := repo_service.AdoptRepository(ctxUser, ctxUser, models.CreateRepoOptions{
4848
Name: dir,
4949
IsPrivate: true,
5050
}); err != nil {
@@ -53,7 +53,7 @@ func AdoptOrDeleteRepository(ctx *context.Context) {
5353
}
5454
ctx.Flash.Success(ctx.Tr("repo.adopt_preexisting_success", dir))
5555
} else if action == "delete" && allowDelete {
56-
if err := repository.DeleteUnadoptedRepository(ctxUser, ctxUser, dir); err != nil {
56+
if err := repo_service.DeleteUnadoptedRepository(ctxUser, ctxUser, dir); err != nil {
5757
ctx.ServerError("repository.AdoptRepository", err)
5858
return
5959
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

modules/cron/tasks_extended.go renamed to services/cron/tasks_extended.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
repo_module "code.gitea.io/gitea/modules/repository"
1313
"code.gitea.io/gitea/modules/setting"
1414
"code.gitea.io/gitea/modules/updatechecker"
15+
repo_service "code.gitea.io/gitea/services/repository"
1516
)
1617

1718
func registerDeleteInactiveUsers() {
@@ -34,7 +35,7 @@ func registerDeleteRepositoryArchives() {
3435
RunAtStart: false,
3536
Schedule: "@annually",
3637
}, func(ctx context.Context, _ *models.User, _ Config) error {
37-
return repo_module.DeleteRepositoryArchives(ctx)
38+
return repo_service.DeleteRepositoryArchives(ctx)
3839
})
3940
}
4041

modules/repository/adopt.go renamed to services/repository/adopt.go

Lines changed: 92 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@ import (
1515
"code.gitea.io/gitea/models/db"
1616
"code.gitea.io/gitea/modules/git"
1717
"code.gitea.io/gitea/modules/log"
18+
"code.gitea.io/gitea/modules/notification"
19+
repo_module "code.gitea.io/gitea/modules/repository"
1820
"code.gitea.io/gitea/modules/setting"
1921
"code.gitea.io/gitea/modules/util"
22+
2023
"github.com/gobwas/glob"
2124
)
2225

23-
// AdoptRepository adopts a repository for the user/organization.
26+
// AdoptRepository adopts pre-existing repository files for the user/organization.
2427
func AdoptRepository(doer, u *models.User, opts models.CreateRepoOptions) (*models.Repository, error) {
2528
if !doer.IsAdmin && !u.CanCreateRepo() {
2629
return nil, models.ErrReachLimitOfRepo{
@@ -90,9 +93,97 @@ func AdoptRepository(doer, u *models.User, opts models.CreateRepoOptions) (*mode
9093
return nil, err
9194
}
9295

96+
notification.NotifyCreateRepository(doer, u, repo)
97+
9398
return repo, nil
9499
}
95100

101+
func adoptRepository(ctx context.Context, repoPath string, u *models.User, repo *models.Repository, opts models.CreateRepoOptions) (err error) {
102+
isExist, err := util.IsExist(repoPath)
103+
if err != nil {
104+
log.Error("Unable to check if %s exists. Error: %v", repoPath, err)
105+
return err
106+
}
107+
if !isExist {
108+
return fmt.Errorf("adoptRepository: path does not already exist: %s", repoPath)
109+
}
110+
111+
if err := repo_module.CreateDelegateHooks(repoPath); err != nil {
112+
return fmt.Errorf("createDelegateHooks: %v", err)
113+
}
114+
115+
// Re-fetch the repository from database before updating it (else it would
116+
// override changes that were done earlier with sql)
117+
if repo, err = models.GetRepositoryByIDCtx(ctx, repo.ID); err != nil {
118+
return fmt.Errorf("getRepositoryByID: %v", err)
119+
}
120+
121+
repo.IsEmpty = false
122+
gitRepo, err := git.OpenRepository(repo.RepoPath())
123+
if err != nil {
124+
return fmt.Errorf("openRepository: %v", err)
125+
}
126+
defer gitRepo.Close()
127+
if len(opts.DefaultBranch) > 0 {
128+
repo.DefaultBranch = opts.DefaultBranch
129+
130+
if err = gitRepo.SetDefaultBranch(repo.DefaultBranch); err != nil {
131+
return fmt.Errorf("setDefaultBranch: %v", err)
132+
}
133+
} else {
134+
repo.DefaultBranch, err = gitRepo.GetDefaultBranch()
135+
if err != nil {
136+
repo.DefaultBranch = setting.Repository.DefaultBranch
137+
if err = gitRepo.SetDefaultBranch(repo.DefaultBranch); err != nil {
138+
return fmt.Errorf("setDefaultBranch: %v", err)
139+
}
140+
}
141+
142+
repo.DefaultBranch = strings.TrimPrefix(repo.DefaultBranch, git.BranchPrefix)
143+
}
144+
branches, _, _ := gitRepo.GetBranches(0, 0)
145+
found := false
146+
hasDefault := false
147+
hasMaster := false
148+
hasMain := false
149+
for _, branch := range branches {
150+
if branch == repo.DefaultBranch {
151+
found = true
152+
break
153+
} else if branch == setting.Repository.DefaultBranch {
154+
hasDefault = true
155+
} else if branch == "master" {
156+
hasMaster = true
157+
} else if branch == "main" {
158+
hasMain = true
159+
}
160+
}
161+
if !found {
162+
if hasDefault {
163+
repo.DefaultBranch = setting.Repository.DefaultBranch
164+
} else if hasMaster {
165+
repo.DefaultBranch = "master"
166+
} else if hasMain {
167+
repo.DefaultBranch = "main"
168+
} else if len(branches) > 0 {
169+
repo.DefaultBranch = branches[0]
170+
} else {
171+
repo.IsEmpty = true
172+
repo.DefaultBranch = setting.Repository.DefaultBranch
173+
}
174+
175+
if err = gitRepo.SetDefaultBranch(repo.DefaultBranch); err != nil {
176+
return fmt.Errorf("setDefaultBranch: %v", err)
177+
}
178+
}
179+
180+
if err = models.UpdateRepositoryCtx(ctx, repo, false); err != nil {
181+
return fmt.Errorf("updateRepository: %v", err)
182+
}
183+
184+
return nil
185+
}
186+
96187
// DeleteUnadoptedRepository deletes unadopted repository files from the filesystem
97188
func DeleteUnadoptedRepository(doer, u *models.User, repoName string) error {
98189
if err := models.IsUsableRepoName(repoName); err != nil {
File renamed without changes.

0 commit comments

Comments
 (0)