mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 10:44:12 +01:00 
			
		
		
		
	Fix to use only needed columns from tables to get repository git paths (#3870)
This commit is contained in:
		
							parent
							
								
									9ec7f6b954
								
							
						
					
					
						commit
						5ffdf9388b
					
				@ -163,6 +163,7 @@ func NewRepoContext() {
 | 
			
		||||
type Repository struct {
 | 
			
		||||
	ID            int64  `xorm:"pk autoincr"`
 | 
			
		||||
	OwnerID       int64  `xorm:"UNIQUE(s)"`
 | 
			
		||||
	OwnerName     string `xorm:"-"`
 | 
			
		||||
	Owner         *User  `xorm:"-"`
 | 
			
		||||
	LowerName     string `xorm:"UNIQUE(s) INDEX NOT NULL"`
 | 
			
		||||
	Name          string `xorm:"INDEX NOT NULL"`
 | 
			
		||||
@ -225,9 +226,17 @@ func (repo *Repository) MustOwner() *User {
 | 
			
		||||
	return repo.mustOwner(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MustOwnerName always returns valid owner name to avoid
 | 
			
		||||
// conceptually impossible error handling.
 | 
			
		||||
// It returns "error" and logs error details when error
 | 
			
		||||
// occurs.
 | 
			
		||||
func (repo *Repository) MustOwnerName() string {
 | 
			
		||||
	return repo.mustOwnerName(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// FullName returns the repository full name
 | 
			
		||||
func (repo *Repository) FullName() string {
 | 
			
		||||
	return repo.MustOwner().Name + "/" + repo.Name
 | 
			
		||||
	return repo.MustOwnerName() + "/" + repo.Name
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// HTMLURL returns the repository HTML URL
 | 
			
		||||
@ -479,6 +488,41 @@ func (repo *Repository) mustOwner(e Engine) *User {
 | 
			
		||||
	return repo.Owner
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (repo *Repository) getOwnerName(e Engine) error {
 | 
			
		||||
	if len(repo.OwnerName) > 0 {
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if repo.Owner != nil {
 | 
			
		||||
		repo.OwnerName = repo.Owner.Name
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	u := new(User)
 | 
			
		||||
	has, err := e.ID(repo.OwnerID).Cols("name").Get(u)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	} else if !has {
 | 
			
		||||
		return ErrUserNotExist{repo.OwnerID, "", 0}
 | 
			
		||||
	}
 | 
			
		||||
	repo.OwnerName = u.Name
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetOwnerName returns the repository owner name
 | 
			
		||||
func (repo *Repository) GetOwnerName() error {
 | 
			
		||||
	return repo.getOwnerName(x)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (repo *Repository) mustOwnerName(e Engine) string {
 | 
			
		||||
	if err := repo.getOwnerName(e); err != nil {
 | 
			
		||||
		log.Error(4, "Error loading repository owner name: %v", err)
 | 
			
		||||
		return "error"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return repo.OwnerName
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ComposeMetas composes a map of metas for rendering external issue tracker URL.
 | 
			
		||||
func (repo *Repository) ComposeMetas() map[string]string {
 | 
			
		||||
	unit, err := repo.GetUnit(UnitTypeExternalTracker)
 | 
			
		||||
@ -590,7 +634,7 @@ func (repo *Repository) GetBaseRepo() (err error) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (repo *Repository) repoPath(e Engine) string {
 | 
			
		||||
	return RepoPath(repo.mustOwner(e).Name, repo.Name)
 | 
			
		||||
	return RepoPath(repo.mustOwnerName(e), repo.Name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// RepoPath returns the repository path
 | 
			
		||||
@ -2141,7 +2185,7 @@ func ReinitMissingRepositories() error {
 | 
			
		||||
// SyncRepositoryHooks rewrites all repositories' pre-receive, update and post-receive hooks
 | 
			
		||||
// to make sure the binary and custom conf path are up-to-date.
 | 
			
		||||
func SyncRepositoryHooks() error {
 | 
			
		||||
	return x.Where("id > 0").Iterate(new(Repository),
 | 
			
		||||
	return x.Cols("owner_id", "name").Where("id > 0").Iterate(new(Repository),
 | 
			
		||||
		func(idx int, bean interface{}) error {
 | 
			
		||||
			if err := createDelegateHooks(bean.(*Repository).RepoPath()); err != nil {
 | 
			
		||||
				return fmt.Errorf("SyncRepositoryHook: %v", err)
 | 
			
		||||
 | 
			
		||||
@ -67,7 +67,7 @@ func WikiPath(userName, repoName string) string {
 | 
			
		||||
 | 
			
		||||
// WikiPath returns wiki data path for given repository.
 | 
			
		||||
func (repo *Repository) WikiPath() string {
 | 
			
		||||
	return WikiPath(repo.MustOwner().Name, repo.Name)
 | 
			
		||||
	return WikiPath(repo.MustOwnerName(), repo.Name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// HasWiki returns true if repository has wiki.
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user