diff options
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 35 |
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) |