diff options
Diffstat (limited to 'internal/db/repo.go')
-rw-r--r-- | internal/db/repo.go | 65 |
1 files changed, 32 insertions, 33 deletions
diff --git a/internal/db/repo.go b/internal/db/repo.go index 7c6d9e36..6377c2a4 100644 --- a/internal/db/repo.go +++ b/internal/db/repo.go @@ -30,13 +30,12 @@ import ( "github.com/gogs/git-module" api "github.com/gogs/go-gogs-client" - "gogs.io/gogs/internal/assets/conf" "gogs.io/gogs/internal/avatar" + "gogs.io/gogs/internal/conf" "gogs.io/gogs/internal/db/errors" "gogs.io/gogs/internal/markup" "gogs.io/gogs/internal/osutil" "gogs.io/gogs/internal/process" - "gogs.io/gogs/internal/setting" "gogs.io/gogs/internal/sync" ) @@ -61,7 +60,7 @@ func LoadRepoConfig() { if err != nil { log.Fatal("Failed to get %s files: %v", t, err) } - customPath := path.Join(setting.CustomPath, "conf", t) + customPath := filepath.Join(conf.CustomDir(), "conf", t) if com.IsDir(customPath) { customFiles, err := com.StatDir(customPath) if err != nil { @@ -88,13 +87,13 @@ func LoadRepoConfig() { // Filter out invalid names and promote preferred licenses. sortedLicenses := make([]string, 0, len(Licenses)) - for _, name := range setting.Repository.PreferredLicenses { + for _, name := range conf.Repository.PreferredLicenses { if com.IsSliceContainsStr(Licenses, name) { sortedLicenses = append(sortedLicenses, name) } } for _, name := range Licenses { - if !com.IsSliceContainsStr(setting.Repository.PreferredLicenses, name) { + if !com.IsSliceContainsStr(conf.Repository.PreferredLicenses, name) { sortedLicenses = append(sortedLicenses, name) } } @@ -111,18 +110,18 @@ func NewRepoContext() { // Check Git version. var err error - setting.Git.Version, err = git.BinVersion() + conf.Git.Version, err = git.BinVersion() if err != nil { log.Fatal("Failed to get Git version: %v", err) } - log.Trace("Git version: %s", setting.Git.Version) - if version.Compare("1.8.3", setting.Git.Version, ">") { + log.Trace("Git version: %s", conf.Git.Version) + if version.Compare("1.8.3", conf.Git.Version, ">") { log.Fatal("Gogs requires Git version greater or equal to 1.8.3") } git.HookDir = "custom_hooks" git.HookSampleDir = "hooks" - git.DefaultCommitsPageSize = setting.UI.User.CommitsPagingNum + git.DefaultCommitsPageSize = conf.UI.User.CommitsPagingNum // Git requires setting user.name and user.email in order to commit changes. for configKey, defaultValue := range map[string]string{"user.name": "Gogs", "user.email": "gogs@fake.local"} { @@ -145,7 +144,7 @@ func NewRepoContext() { log.Fatal("Failed to execute 'git config --global core.quotepath false': %v - %s", err, stderr) } - RemoveAllWithNotice("Clean up repository temporary data", filepath.Join(setting.AppDataPath, "tmp")) + RemoveAllWithNotice("Clean up repository temporary data", filepath.Join(conf.Server.AppDataPath, "tmp")) } // Repository contains information of a repository. @@ -292,12 +291,12 @@ func (repo *Repository) FullName() string { } func (repo *Repository) HTMLURL() string { - return setting.AppURL + repo.FullName() + return conf.Server.ExternalURL + repo.FullName() } // CustomAvatarPath returns repository custom avatar file path. func (repo *Repository) CustomAvatarPath() string { - return filepath.Join(setting.RepositoryAvatarUploadPath, com.ToStr(repo.ID)) + return filepath.Join(conf.RepositoryAvatarUploadPath, com.ToStr(repo.ID)) } // RelAvatarLink returns relative avatar link to the site domain, @@ -308,14 +307,14 @@ func (repo *Repository) RelAvatarLink() string { if !com.IsExist(repo.CustomAvatarPath()) { return defaultImgUrl } - return fmt.Sprintf("%s/%s/%d", setting.AppSubURL, REPO_AVATAR_URL_PREFIX, repo.ID) + return fmt.Sprintf("%s/%s/%d", conf.Server.Subpath, REPO_AVATAR_URL_PREFIX, repo.ID) } // AvatarLink returns repository avatar absolute link. func (repo *Repository) AvatarLink() string { link := repo.RelAvatarLink() if link[0] == '/' && link[1] != '/' { - return setting.AppURL + strings.TrimPrefix(link, setting.AppSubURL)[1:] + return conf.Server.ExternalURL + strings.TrimPrefix(link, conf.Server.Subpath)[1:] } return link } @@ -328,7 +327,7 @@ func (repo *Repository) UploadAvatar(data []byte) error { return fmt.Errorf("decode image: %v", err) } - os.MkdirAll(setting.RepositoryAvatarUploadPath, os.ModePerm) + _ = os.MkdirAll(conf.RepositoryAvatarUploadPath, os.ModePerm) fw, err := os.Create(repo.CustomAvatarPath()) if err != nil { return fmt.Errorf("create custom avatar directory: %v", err) @@ -546,7 +545,7 @@ func (repo *Repository) RelLink() string { } func (repo *Repository) Link() string { - return setting.AppSubURL + "/" + repo.FullName() + return conf.Server.Subpath + "/" + repo.FullName() } func (repo *Repository) ComposeCompareURL(oldCommitID, newCommitID string) string { @@ -593,7 +592,7 @@ func (repo *Repository) NextIssueIndex() int64 { } func (repo *Repository) LocalCopyPath() string { - return path.Join(setting.AppDataPath, "tmp/local-repo", com.ToStr(repo.ID)) + return filepath.Join(conf.Server.AppDataPath, "tmp", "local-repo", com.ToStr(repo.ID)) } // UpdateLocalCopy fetches latest changes of given branch from repoPath to localPath. @@ -609,7 +608,7 @@ func UpdateLocalCopyBranch(repoPath, localPath, branch string, isWiki bool) (err branch = "" } if err = git.Clone(repoPath, localPath, git.CloneRepoOptions{ - Timeout: time.Duration(setting.Git.Timeout.Clone) * time.Second, + Timeout: time.Duration(conf.Git.Timeout.Clone) * time.Second, Branch: branch, }); err != nil { return fmt.Errorf("git clone %s: %v", branch, err) @@ -685,7 +684,7 @@ type CloneLink struct { // ComposeHTTPSCloneURL returns HTTPS clone URL based on given owner and repository name. func ComposeHTTPSCloneURL(owner, repo string) string { - return fmt.Sprintf("%s%s/%s.git", setting.AppURL, owner, repo) + return fmt.Sprintf("%s%s/%s.git", conf.Server.ExternalURL, owner, repo) } func (repo *Repository) cloneLink(isWiki bool) *CloneLink { @@ -696,10 +695,10 @@ func (repo *Repository) cloneLink(isWiki bool) *CloneLink { repo.Owner = repo.MustOwner() cl := new(CloneLink) - if setting.SSH.Port != 22 { - cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", setting.RunUser, setting.SSH.Domain, setting.SSH.Port, repo.Owner.Name, repoName) + if conf.SSH.Port != 22 { + cl.SSH = fmt.Sprintf("ssh://%s@%s:%d/%s/%s.git", conf.App.RunUser, conf.SSH.Domain, conf.SSH.Port, repo.Owner.Name, repoName) } else { - cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", setting.RunUser, setting.SSH.Domain, repo.Owner.Name, repoName) + cl.SSH = fmt.Sprintf("%s@%s:%s/%s.git", conf.App.RunUser, conf.SSH.Domain, repo.Owner.Name, repoName) } cl.HTTPS = ComposeHTTPSCloneURL(repo.Owner.Name, repoName) return cl @@ -764,7 +763,7 @@ func MigrateRepository(doer, owner *User, opts MigrateRepoOptions) (*Repository, repo.NumWatches = 1 } - migrateTimeout := time.Duration(setting.Git.Timeout.Migrate) * time.Second + migrateTimeout := time.Duration(conf.Git.Timeout.Migrate) * time.Second RemoveAllWithNotice("Repository path erase before creation", repoPath) if err = git.Clone(opts.RemoteAddr, repoPath, git.CloneRepoOptions{ @@ -820,9 +819,9 @@ func MigrateRepository(doer, owner *User, opts MigrateRepoOptions) (*Repository, if opts.IsMirror { if _, err = x.InsertOne(&Mirror{ RepoID: repo.ID, - Interval: setting.Mirror.DefaultInterval, + Interval: conf.Mirror.DefaultInterval, EnablePrune: true, - NextSync: time.Now().Add(time.Duration(setting.Mirror.DefaultInterval) * time.Hour), + NextSync: time.Now().Add(time.Duration(conf.Mirror.DefaultInterval) * time.Hour), }); err != nil { return repo, fmt.Errorf("InsertOne: %v", err) } @@ -858,7 +857,7 @@ func createDelegateHooks(repoPath string) (err error) { for _, name := range git.HookNames { hookPath := filepath.Join(repoPath, "hooks", name) if err = ioutil.WriteFile(hookPath, - []byte(fmt.Sprintf(hooksTpls[name], setting.ScriptType, setting.AppPath, setting.CustomConf)), + []byte(fmt.Sprintf(hooksTpls[name], conf.ScriptType, conf.AppPath(), conf.CustomConf)), os.ModePerm); err != nil { return fmt.Errorf("create delegate hook '%s': %v", hookPath, err) } @@ -929,7 +928,7 @@ func getRepoInitFile(tp, name string) ([]byte, error) { relPath := path.Join("conf", tp, strings.TrimLeft(path.Clean("/"+name), "/")) // Use custom file when available. - customPath := path.Join(setting.CustomPath, relPath) + customPath := filepath.Join(conf.CustomDir(), relPath) if osutil.IsFile(customPath) { return ioutil.ReadFile(customPath) } @@ -1768,7 +1767,7 @@ func DeleteOldRepositoryArchives() { log.Trace("Doing: DeleteOldRepositoryArchives") formats := []string{"zip", "targz"} - oldestTime := time.Now().Add(-setting.Cron.RepoArchiveCleanup.OlderThan) + oldestTime := time.Now().Add(-conf.Cron.RepoArchiveCleanup.OlderThan) if err := x.Where("id > 0").Iterate(new(Repository), func(idx int, bean interface{}) error { repo := bean.(*Repository) @@ -1931,7 +1930,7 @@ func GitFsck() { func(idx int, bean interface{}) error { repo := bean.(*Repository) repoPath := repo.RepoPath() - if err := git.Fsck(repoPath, setting.Cron.RepoHealthCheck.Timeout, setting.Cron.RepoHealthCheck.Args...); err != nil { + if err := git.Fsck(repoPath, conf.Cron.RepoHealthCheck.Timeout, conf.Cron.RepoHealthCheck.Args...); err != nil { desc := fmt.Sprintf("Failed to perform health check on repository '%s': %v", repoPath, err) log.Warn(desc) if err = CreateRepositoryNotice(desc); err != nil { @@ -1945,7 +1944,7 @@ func GitFsck() { } func GitGcRepos() error { - args := append([]string{"gc"}, setting.Git.GCArgs...) + args := append([]string{"gc"}, conf.Git.GCArgs...) return x.Where("id > 0").Iterate(new(Repository), func(idx int, bean interface{}) error { repo := bean.(*Repository) @@ -1953,7 +1952,7 @@ func GitGcRepos() error { return err } _, stderr, err := process.ExecDir( - time.Duration(setting.Git.Timeout.GC)*time.Second, + time.Duration(conf.Git.Timeout.GC)*time.Second, RepoPath(repo.Owner.Name, repo.Name), "Repository garbage collection", "git", args...) if err != nil { @@ -2235,7 +2234,7 @@ func GetWatchers(repoID int64) ([]*Watch, error) { func (repo *Repository) GetWatchers(page int) ([]*User, error) { users := make([]*User, 0, ItemsPerPage) sess := x.Limit(ItemsPerPage, (page-1)*ItemsPerPage).Where("watch.repo_id=?", repo.ID) - if setting.UsePostgreSQL { + if conf.UsePostgreSQL { sess = sess.Join("LEFT", "watch", `"user".id=watch.user_id`) } else { sess = sess.Join("LEFT", "watch", "user.id=watch.user_id") @@ -2326,7 +2325,7 @@ func IsStaring(userID, repoID int64) bool { func (repo *Repository) GetStargazers(page int) ([]*User, error) { users := make([]*User, 0, ItemsPerPage) sess := x.Limit(ItemsPerPage, (page-1)*ItemsPerPage).Where("star.repo_id=?", repo.ID) - if setting.UsePostgreSQL { + if conf.UsePostgreSQL { sess = sess.Join("LEFT", "star", `"user".id=star.uid`) } else { sess = sess.Join("LEFT", "star", "user.id=star.uid") |