aboutsummaryrefslogtreecommitdiff
path: root/models/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go35
1 files changed, 24 insertions, 11 deletions
diff --git a/models/repo.go b/models/repo.go
index 50b2b3fc..58c099d4 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -7,7 +7,6 @@ package models
import (
"errors"
"fmt"
- "html"
"html/template"
"io/ioutil"
"os"
@@ -218,11 +217,9 @@ func (repo *Repository) HasAccess(uname string) bool {
// DescriptionHtml does special handles to description and return HTML string.
func (repo *Repository) DescriptionHtml() template.HTML {
sanitize := func(s string) string {
- // TODO(nuss-justin): Improve sanitization. Strip all tags?
- ss := html.EscapeString(s)
- return fmt.Sprintf(`<a href="%s" target="_blank">%s</a>`, ss, ss)
+ return fmt.Sprintf(`<a href="%[1]s" target="_blank">%[1]s</a>`, s)
}
- return template.HTML(DescPattern.ReplaceAllStringFunc(base.XSSString(repo.Description), sanitize))
+ return template.HTML(DescPattern.ReplaceAllStringFunc(base.Sanitizer.Sanitize(repo.Description), sanitize))
}
// IsRepositoryExist returns true if the repository with given name under user has already existed.
@@ -829,6 +826,8 @@ func TransferOwnership(u *User, newOwner string, repo *Repository) error {
// ChangeRepositoryName changes all corresponding setting from old repository name to new one.
func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error) {
+ userName = strings.ToLower(userName)
+ oldRepoName = strings.ToLower(oldRepoName)
newRepoName = strings.ToLower(newRepoName)
if !IsLegalName(newRepoName) {
return ErrRepoNameIllegal
@@ -836,7 +835,7 @@ func ChangeRepositoryName(userName, oldRepoName, newRepoName string) (err error)
// Update accesses.
accesses := make([]Access, 0, 10)
- if err = x.Find(&accesses, &Access{RepoName: strings.ToLower(userName + "/" + oldRepoName)}); err != nil {
+ if err = x.Find(&accesses, &Access{RepoName: userName + "/" + oldRepoName}); err != nil {
return err
}
@@ -1184,6 +1183,8 @@ func MirrorUpdate() {
isMirrorUpdating = true
defer func() { isMirrorUpdating = false }()
+ mirrors := make([]*Mirror, 0, 10)
+
if err := x.Iterate(new(Mirror), func(idx int, bean interface{}) error {
m := bean.(*Mirror)
if m.NextUpdate.After(time.Now()) {
@@ -1194,13 +1195,25 @@ func MirrorUpdate() {
if _, stderr, err := process.ExecDir(10*time.Minute,
repoPath, fmt.Sprintf("MirrorUpdate: %s", repoPath),
"git", "remote", "update"); err != nil {
- return errors.New("git remote update: " + stderr)
+ desc := fmt.Sprintf("Fail to update mirror repository(%s): %s", repoPath, stderr)
+ log.Error(4, desc)
+ if err = CreateRepositoryNotice(desc); err != nil {
+ log.Error(4, "Fail to add notice: %v", err)
+ }
+ return nil
}
m.NextUpdate = time.Now().Add(time.Duration(m.Interval) * time.Hour)
- return UpdateMirror(m)
+ mirrors = append(mirrors, m)
+ return nil
}); err != nil {
- log.Error(4, "repo.MirrorUpdate: %v", err)
+ log.Error(4, "MirrorUpdate: %v", err)
+ }
+
+ for i := range mirrors {
+ if err := UpdateMirror(mirrors[i]); err != nil {
+ log.Error(4, "UpdateMirror", fmt.Sprintf("%s: %v", mirrors[i].RepoName, err))
+ }
}
}
@@ -1212,7 +1225,7 @@ func GitFsck() {
isGitFscking = true
defer func() { isGitFscking = false }()
- args := append([]string{"fsck"}, setting.GitFsckArgs...)
+ args := append([]string{"fsck"}, setting.Git.Fsck.Args...)
if err := x.Where("id > 0").Iterate(new(Repository),
func(idx int, bean interface{}) error {
repo := bean.(*Repository)
@@ -1236,7 +1249,7 @@ func GitFsck() {
}
func GitGcRepos() error {
- args := append([]string{"gc"}, setting.GitGcArgs...)
+ args := append([]string{"gc"}, setting.Git.GcArgs...)
return x.Where("id > 0").Iterate(new(Repository),
func(idx int, bean interface{}) error {
repo := bean.(*Repository)