1
1
mirror of https://github.com/go-gitea/gitea synced 2025-07-10 04:27:22 +00:00

Add abstraction layer to check if the repository exists on disk (#33874)

Extract from #28966 

This PR uses `gitrepo.IsRepositoryExist` instead of `util.IsExist` to
detect whether the repository exist in disk. This will move `RepoPath`
detail behind of package `gitrepo` to make it easier to do possible
changes where storing the repositories.

No code change
This commit is contained in:
Lunny Xiao
2025-03-13 20:00:56 -07:00
committed by GitHub
parent 1e7248047c
commit 9c673d066c
6 changed files with 45 additions and 47 deletions

View File

@ -13,6 +13,7 @@ import (
issues_model "code.gitea.io/gitea/models/issues"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/gitrepo"
"code.gitea.io/gitea/modules/label"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/options"
@ -120,25 +121,24 @@ func LoadRepoConfig() error {
return nil
}
func CheckInitRepository(ctx context.Context, owner, name, objectFormatName string) (err error) {
func CheckInitRepository(ctx context.Context, repo *repo_model.Repository) (err error) {
// Somehow the directory could exist.
repoPath := repo_model.RepoPath(owner, name)
isExist, err := util.IsExist(repoPath)
isExist, err := gitrepo.IsRepositoryExist(ctx, repo)
if err != nil {
log.Error("Unable to check if %s exists. Error: %v", repoPath, err)
log.Error("Unable to check if %s exists. Error: %v", repo.FullName(), err)
return err
}
if isExist {
return repo_model.ErrRepoFilesAlreadyExist{
Uname: owner,
Name: name,
Uname: repo.OwnerName,
Name: repo.Name,
}
}
// Init git bare new repository.
if err = git.InitRepository(ctx, repoPath, true, objectFormatName); err != nil {
if err = git.InitRepository(ctx, repo.RepoPath(), true, repo.ObjectFormatName); err != nil {
return fmt.Errorf("git.InitRepository: %w", err)
} else if err = CreateDelegateHooks(repoPath); err != nil {
} else if err = CreateDelegateHooks(repo.RepoPath()); err != nil {
return fmt.Errorf("createDelegateHooks: %w", err)
}
return nil