Skip to content

Commit 7fd44a8

Browse files
authored
Move hooks function to gitrepo and reduce expose repopath (#33890)
Extract from #28966 Follow #33874
1 parent 1ea5216 commit 7fd44a8

File tree

8 files changed

+38
-24
lines changed

8 files changed

+38
-24
lines changed

modules/repository/hooks.go modules/gitrepo/hooks.go

+24-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// Copyright 2020 The Gitea Authors. All rights reserved.
22
// SPDX-License-Identifier: MIT
33

4-
package repository
4+
package gitrepo
55

66
import (
7+
"context"
78
"fmt"
89
"os"
910
"path/filepath"
@@ -105,10 +106,18 @@ done
105106
return hookNames, hookTpls, giteaHookTpls
106107
}
107108

108-
// CreateDelegateHooks creates all the hooks scripts for the repo
109-
func CreateDelegateHooks(repoPath string) (err error) {
109+
// CreateDelegateHooksForRepo creates all the hooks scripts for the repo
110+
func CreateDelegateHooksForRepo(_ context.Context, repo Repository) (err error) {
111+
return createDelegateHooks(filepath.Join(repoPath(repo), "hooks"))
112+
}
113+
114+
// CreateDelegateHooksForWiki creates all the hooks scripts for the wiki repo
115+
func CreateDelegateHooksForWiki(_ context.Context, repo Repository) (err error) {
116+
return createDelegateHooks(filepath.Join(wikiPath(repo), "hooks"))
117+
}
118+
119+
func createDelegateHooks(hookDir string) (err error) {
110120
hookNames, hookTpls, giteaHookTpls := getHookTemplates()
111-
hookDir := filepath.Join(repoPath, "hooks")
112121

113122
for i, hookName := range hookNames {
114123
oldHookPath := filepath.Join(hookDir, hookName)
@@ -169,11 +178,19 @@ func ensureExecutable(filename string) error {
169178
return os.Chmod(filename, mode)
170179
}
171180

172-
// CheckDelegateHooks checks the hooks scripts for the repo
173-
func CheckDelegateHooks(repoPath string) ([]string, error) {
181+
// CheckDelegateHooksForRepo checks the hooks scripts for the repo
182+
func CheckDelegateHooksForRepo(_ context.Context, repo Repository) ([]string, error) {
183+
return checkDelegateHooks(filepath.Join(repoPath(repo), "hooks"))
184+
}
185+
186+
// CheckDelegateHooksForWiki checks the hooks scripts for the repo
187+
func CheckDelegateHooksForWiki(_ context.Context, repo Repository) ([]string, error) {
188+
return checkDelegateHooks(filepath.Join(wikiPath(repo), "hooks"))
189+
}
190+
191+
func checkDelegateHooks(hookDir string) ([]string, error) {
174192
hookNames, hookTpls, giteaHookTpls := getHookTemplates()
175193

176-
hookDir := filepath.Join(repoPath, "hooks")
177194
results := make([]string, 0, 10)
178195

179196
for i, hookName := range hookNames {

modules/repository/init.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func CheckInitRepository(ctx context.Context, repo *repo_model.Repository) (err
138138
// Init git bare new repository.
139139
if err = git.InitRepository(ctx, repo.RepoPath(), true, repo.ObjectFormatName); err != nil {
140140
return fmt.Errorf("git.InitRepository: %w", err)
141-
} else if err = CreateDelegateHooks(repo.RepoPath()); err != nil {
141+
} else if err = gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil {
142142
return fmt.Errorf("createDelegateHooks: %w", err)
143143
}
144144
return nil

services/doctor/misc.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"code.gitea.io/gitea/modules/git"
1919
"code.gitea.io/gitea/modules/gitrepo"
2020
"code.gitea.io/gitea/modules/log"
21-
"code.gitea.io/gitea/modules/repository"
2221
"code.gitea.io/gitea/modules/setting"
2322
"code.gitea.io/gitea/modules/structs"
2423
"code.gitea.io/gitea/modules/util"
@@ -50,14 +49,14 @@ func checkScriptType(ctx context.Context, logger log.Logger, autofix bool) error
5049

5150
func checkHooks(ctx context.Context, logger log.Logger, autofix bool) error {
5251
if err := iterateRepositories(ctx, func(repo *repo_model.Repository) error {
53-
results, err := repository.CheckDelegateHooks(repo.RepoPath())
52+
results, err := gitrepo.CheckDelegateHooksForRepo(ctx, repo)
5453
if err != nil {
5554
logger.Critical("Unable to check delegate hooks for repo %-v. ERROR: %v", repo, err)
5655
return fmt.Errorf("Unable to check delegate hooks for repo %-v. ERROR: %w", repo, err)
5756
}
5857
if len(results) > 0 && autofix {
5958
logger.Warn("Regenerated hooks for %s", repo.FullName())
60-
if err := repository.CreateDelegateHooks(repo.RepoPath()); err != nil {
59+
if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil {
6160
logger.Critical("Unable to recreate delegate hooks for %-v. ERROR: %v", repo, err)
6261
return fmt.Errorf("Unable to recreate delegate hooks for %-v. ERROR: %w", repo, err)
6362
}

services/repository/adopt.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func adoptRepository(ctx context.Context, repo *repo_model.Repository, defaultBr
115115
return fmt.Errorf("adoptRepository: path does not already exist: %s", repo.FullName())
116116
}
117117

118-
if err := repo_module.CreateDelegateHooks(repo.RepoPath()); err != nil {
118+
if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil {
119119
return fmt.Errorf("createDelegateHooks: %w", err)
120120
}
121121

services/repository/fork.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,7 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
154154
if opts.SingleBranch != "" {
155155
cloneCmd.AddArguments("--single-branch", "--branch").AddDynamicArguments(opts.SingleBranch)
156156
}
157-
repoPath := repo_model.RepoPath(owner.Name, repo.Name)
158-
if stdout, _, err := cloneCmd.AddDynamicArguments(oldRepoPath, repoPath).
157+
if stdout, _, err := cloneCmd.AddDynamicArguments(oldRepoPath, repo.RepoPath()).
159158
RunStdBytes(txCtx, &git.RunOpts{Timeout: 10 * time.Minute}); err != nil {
160159
log.Error("Fork Repository (git clone) Failed for %v (from %v):\nStdout: %s\nError: %v", repo, opts.BaseRepo, stdout, err)
161160
return fmt.Errorf("git clone: %w", err)
@@ -166,12 +165,12 @@ func ForkRepository(ctx context.Context, doer, owner *user_model.User, opts Fork
166165
}
167166

168167
if stdout, _, err := git.NewCommand("update-server-info").
169-
RunStdString(txCtx, &git.RunOpts{Dir: repoPath}); err != nil {
168+
RunStdString(txCtx, &git.RunOpts{Dir: repo.RepoPath()}); err != nil {
170169
log.Error("Fork Repository (git update-server-info) failed for %v:\nStdout: %s\nError: %v", repo, stdout, err)
171170
return fmt.Errorf("git update-server-info: %w", err)
172171
}
173172

174-
if err = repo_module.CreateDelegateHooks(repoPath); err != nil {
173+
if err = gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil {
175174
return fmt.Errorf("createDelegateHooks: %w", err)
176175
}
177176

services/repository/hooks.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"code.gitea.io/gitea/models/webhook"
1313
"code.gitea.io/gitea/modules/gitrepo"
1414
"code.gitea.io/gitea/modules/log"
15-
repo_module "code.gitea.io/gitea/modules/repository"
1615

1716
"xorm.io/builder"
1817
)
@@ -32,11 +31,11 @@ func SyncRepositoryHooks(ctx context.Context) error {
3231
default:
3332
}
3433

35-
if err := repo_module.CreateDelegateHooks(repo.RepoPath()); err != nil {
34+
if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil {
3635
return fmt.Errorf("SyncRepositoryHook: %w", err)
3736
}
3837
if repo.HasWiki() {
39-
if err := repo_module.CreateDelegateHooks(repo.WikiPath()); err != nil {
38+
if err := gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil {
4039
return fmt.Errorf("SyncRepositoryHook: %w", err)
4140
}
4241
}

services/repository/migrate.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
repo_model "code.gitea.io/gitea/models/repo"
1616
user_model "code.gitea.io/gitea/models/user"
1717
"code.gitea.io/gitea/modules/git"
18+
"code.gitea.io/gitea/modules/gitrepo"
1819
"code.gitea.io/gitea/modules/lfs"
1920
"code.gitea.io/gitea/modules/log"
2021
"code.gitea.io/gitea/modules/migration"
@@ -264,17 +265,16 @@ func cleanUpMigrateGitConfig(ctx context.Context, repoPath string) error {
264265

265266
// CleanUpMigrateInfo finishes migrating repository and/or wiki with things that don't need to be done for mirrors.
266267
func CleanUpMigrateInfo(ctx context.Context, repo *repo_model.Repository) (*repo_model.Repository, error) {
267-
repoPath := repo.RepoPath()
268-
if err := repo_module.CreateDelegateHooks(repoPath); err != nil {
268+
if err := gitrepo.CreateDelegateHooksForRepo(ctx, repo); err != nil {
269269
return repo, fmt.Errorf("createDelegateHooks: %w", err)
270270
}
271271
if repo.HasWiki() {
272-
if err := repo_module.CreateDelegateHooks(repo.WikiPath()); err != nil {
272+
if err := gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil {
273273
return repo, fmt.Errorf("createDelegateHooks.(wiki): %w", err)
274274
}
275275
}
276276

277-
_, _, err := git.NewCommand("remote", "rm", "origin").RunStdString(ctx, &git.RunOpts{Dir: repoPath})
277+
_, _, err := git.NewCommand("remote", "rm", "origin").RunStdString(ctx, &git.RunOpts{Dir: repo.RepoPath()})
278278
if err != nil && !git.IsRemoteNotExistError(err) {
279279
return repo, fmt.Errorf("CleanUpMigrateInfo: %w", err)
280280
}

services/wiki/wiki.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func InitWiki(ctx context.Context, repo *repo_model.Repository) error {
4141

4242
if err := git.InitRepository(ctx, repo.WikiPath(), true, repo.ObjectFormatName); err != nil {
4343
return fmt.Errorf("InitRepository: %w", err)
44-
} else if err = repo_module.CreateDelegateHooks(repo.WikiPath()); err != nil {
44+
} else if err = gitrepo.CreateDelegateHooksForWiki(ctx, repo); err != nil {
4545
return fmt.Errorf("createDelegateHooks: %w", err)
4646
} else if _, _, err = git.NewCommand("symbolic-ref", "HEAD").AddDynamicArguments(git.BranchPrefix+repo.DefaultWikiBranch).RunStdString(ctx, &git.RunOpts{Dir: repo.WikiPath()}); err != nil {
4747
return fmt.Errorf("unable to set default wiki branch to %q: %w", repo.DefaultWikiBranch, err)

0 commit comments

Comments
 (0)