diff options
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/models/repo.go b/models/repo.go index 3ea4efc7..65689b6a 100644 --- a/models/repo.go +++ b/models/repo.go @@ -105,21 +105,18 @@ func NewRepoContext() { log.Fatal(4, "Gogs requires Git version greater or equal to 1.7.1") } - // Check if server has basic git setting and set if not. - if stdout, stderr, err := process.Exec("NewRepoContext(get setting)", "git", "config", "--get", "user.name"); err != nil || strings.TrimSpace(stdout) == "" { - // ExitError indicates user.name is not set - if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" { - stndrdUserName := "Gogs" - stndrdUserEmail := "gogitservice@gmail.com" - if _, stderr, gerr := process.Exec("NewRepoContext(set name)", "git", "config", "--global", "user.name", stndrdUserName); gerr != nil { - log.Fatal(4, "Fail to set git user.name(%s): %s", gerr, stderr) - } - if _, stderr, gerr := process.Exec("NewRepoContext(set email)", "git", "config", "--global", "user.email", stndrdUserEmail); gerr != nil { - log.Fatal(4, "Fail to set git user.email(%s): %s", gerr, stderr) + // Check if server has user.email and user.name set correctly and set if they're not. + for configKey, defaultValue := range map[string]string{"user.name": "Gogs", "user.email": "gogitservice@gmail.com"} { + if stdout, stderr, err := process.Exec("NewRepoContext(get setting)", "git", "config", "--get", configKey); err != nil || strings.TrimSpace(stdout) == "" { + // ExitError indicates this config is not set + if _, ok := err.(*exec.ExitError); ok || strings.TrimSpace(stdout) == "" { + if _, stderr, gerr := process.Exec("NewRepoContext(set "+configKey+")", "git", "config", "--global", configKey, defaultValue); gerr != nil { + log.Fatal(4, "Fail to set git %s(%s): %s", configKey, gerr, stderr) + } + log.Info("Git config %s set to %s", configKey, defaultValue) + } else { + log.Fatal(4, "Fail to get git %s(%s): %s", configKey, err, stderr) } - log.Info("Git user.name and user.email set to %s <%s>", stndrdUserName, stndrdUserEmail) - } else { - log.Fatal(4, "Fail to get git user.name(%s): %s", err, stderr) } } @@ -832,6 +829,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 @@ -839,7 +838,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 } @@ -1187,6 +1186,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()) { @@ -1197,13 +1198,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)) + } } } @@ -1215,7 +1228,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) @@ -1239,7 +1252,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) |