aboutsummaryrefslogtreecommitdiff
path: root/internal/db/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/db/repo.go')
-rw-r--r--internal/db/repo.go65
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")